Bu, tüm web'de biraz rezil bir hata gibi görünüyor. Öyle ki, senaryom uymadığı için sorunuma bir cevap bulamadım. Görüntüyü akışa kaydettiğimde bir istisna oluşuyor.
Tuhaf bir şekilde bu bir png ile mükemmel çalışır, ancak yukarıdaki hatayı jpg ve gif ile karıştırır, ki bu oldukça kafa karıştırıcıdır.
Orada en benzer sorun görüntüleri izinsiz dosyalara kaydetmek ile ilgilidir. İronik olarak çözüm, yaptığım gibi bir bellek akışı kullanmaktır ....
public static byte[] ConvertImageToByteArray(Image imageToConvert)
{
using (var ms = new MemoryStream())
{
ImageFormat format;
switch (imageToConvert.MimeType())
{
case "image/png":
format = ImageFormat.Png;
break;
case "image/gif":
format = ImageFormat.Gif;
break;
default:
format = ImageFormat.Jpeg;
break;
}
imageToConvert.Save(ms, format);
return ms.ToArray();
}
}
İstisna için daha fazla ayrıntı. Bunun bu kadar çok soruna neden olmasının nedeni açıklama eksikliğidir :(
System.Runtime.InteropServices.ExternalException was unhandled by user code
Message="A generic error occurred in GDI+."
Source="System.Drawing"
ErrorCode=-2147467259
StackTrace:
at System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(Stream stream, ImageFormat format)
at Caldoo.Infrastructure.PhotoEditor.ConvertImageToByteArray(Image imageToConvert) in C:\Users\Ian\SVN\Caldoo\Caldoo.Coordinator\PhotoEditor.cs:line 139
at Caldoo.Web.Controllers.PictureController.Croppable() in C:\Users\Ian\SVN\Caldoo\Caldoo.Web\Controllers\PictureController.cs:line 132
at lambda_method(ExecutionScope , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
InnerException:
Tamam şimdiye kadar denedim şeyler.
- Görüntüyü klonlama ve bunun üzerinde çalışma.
- Bu MIME için kodlayıcıyı jpeg kalite ayarıyla geçirme.