2016-07-26 3 views
1

Я пытаюсь перепрограммировать изображение в формате JPG с 300 точек на дюйм до 150 точек на дюйм и возвращать файл нулевой длины.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 в настоящее время (2016-08-03) является альфа-программным обеспечением и как таковой незакончен. Когда у вас возникла проблема, горизонтальное и вертикальное разрешение не были установлены в jpeg-изображениях. Это теперь разрешено.

Кстати, есть перегрузки, которые позволяют сохранять как jpeg, не создавая свой собственный экземпляр JpegEncoder.

image.SaveAsJpeg(outputStream);