Magick.NETライブラリを使用して画像 (通常は約 5 ~ 30) の品質/サイズを圧縮しようとしていますが、 ImageOptimizerクラスを使用して、ストリームを使用してLosslessCompress () メソッドを呼び出す方法を本当に理解できません。
- FileStream または MemoryStream を使用する必要がありますか?
- 画像ごとにサーバーに一時ファイルを保存/作成してから、圧縮フローを続行する必要がありますか? (パフォーマンス?)
- 他に何か?
簡単なコード例:
private byte[] ConvertImageToByteArray(IFormFile image)
{
byte[] result = null;
// filestream
using (var fileStream = image.OpenReadStream())
// memory stream
using (var memoryStream = new MemoryStream())
{
var before = fileStream.Length;
ImageOptimizer optimizer = new ImageOptimizer();
optimizer.LosslessCompress(fileStream); // what & how can I pass here stream?
var after = fileStream.Length;
// convert to byte[]
fileStream.CopyTo(memoryStream);
result = memoryStream.ToArray();
}
return result;
}