2016-07-26 1 views
1

JPG画像を300dpiから150dpiにリサンプリングしようとしていますが、長さゼロのファイルが返されています。ImageProcessorCore:画像のリサンプルを試みると長さがゼロの応答が返される

コントローラののActionResult:

public ActionResult ViewImage(string file, int dpi = 300, bool log = true) 
{ 
    FileExtensions fileExtensions = new FileExtensions(); 
    ImageExtensions imageExtensions = new ImageExtensions(); 

    FileModel fileModel = fileExtensions.GetFileModel(file); 
    string contentType = fileModel.FileType; 
    byte[] fileData = fileModel.FileData; 
    string fileName = Path.GetFileNameWithoutExtension(fileModel.FileName) + "_" + dpi + "DPI" + Path.GetExtension(fileModel.FileName); 
    FileStreamResult resampledImage = imageExtensions.ResampleImage(fileData, contentType, dpi); 
    resampledImage.FileDownloadName = fileName; 
    return resampledImage; 
} 

ResampleImage方法:

public FileStreamResult ResampleImage(byte[] fileData, string contentType, int targetDPI) 
{ 
    MemoryStream outputStream = new MemoryStream(); 
    using (Stream sourceStream = new MemoryStream(fileData)) 
    { 
     Image image = new Image(sourceStream); 
     image.HorizontalResolution = targetDPI; 
     image.VerticalResolution = targetDPI; 
     JpegEncoder jpegEncoder = new JpegEncoder(); 
     jpegEncoder.Quality = 100; 
     image.Save(outputStream, jpegEncoder); 
    }   
    FileStreamResult file = new FileStreamResult(outputStream, contentType); 
    return file; 
} 

答えて

1

は、私たちはすでに問題トラッカーでそれに対処してきたので、ここで私最良の答えと思いました。

ImageProcessorCore at alpha(2016-08-03)はアルファソフトウェアであり、未完成です。あなたがこの問題を抱えていた時、水平および垂直解像度はJPEG画像では設定できませんでした。これは今解決されました。

ちなみに、独自のインスタンスを作成せずにjpegとして保存できるオーバーロードがあります。

image.SaveAsJpeg(outputStream); 
関連する問題