.net在IE和FF中生成破碎的jpeg

时间:2009-06-30 06:14:41

标签: .net image

这让我发疯,所以......

将图像调整为小缩略图时,IE和FF无法完整显示生成的图像。 Opera正确显示图像,并且还可以预览窗口图像。

这是一段调整大小的代码:

     final_image = New System.Drawing.Bitmap(92, 110)
     graphic = System.Drawing.Graphics.FromImage(final_image)
     graphic.FillRectangle(New System.Drawing.SolidBrush(System.Drawing.Color.White), New System.Drawing.Rectangle(0, 0, 92, 110))
     graphic.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic
     graphic.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality
     graphic.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality
     graphic.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality
     graphic.DrawImage(original_image, 0, 0, 92, 110)

     Dim info() As Drawing.Imaging.ImageCodecInfo = Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
     Dim encoderParameters As Drawing.Imaging.EncoderParameters
     encoderParameters = New Drawing.Imaging.EncoderParameters(1)
     encoderParameters.Param(0) = New Drawing.Imaging.EncoderParameter(Drawing.Imaging.Encoder.Quality, 100L)

结果:

This image should be missing it's lower 1/6 in FF3 and IE6/7 http://incito.hr/e387103c-b12f-4324-ac2d-a836e65a6bad-92x110.jpg

如果您的浏览器正确显示上面的图像(从FF3捕获屏幕):

Screen capture from FF3 http://incito.hr/Clipboard02.png

但是,如果我将缩略图大小增加到126x150 - 一切都很好,在所有浏览器中:

Same image resized by the same code to 126x150 http://incito.hr/4d51a5cd-621e-4709-b24a-ebb8f9da54dd-126x150.jpg

3 个答案:

答案 0 :(得分:3)

这可能与图像末尾的EOI标记有关。

类似的事情发生在我身上,我依稀记得在JPG的末尾添加一个EOI字节解决了它。

我建议您在wiki page搜索EOI并尝试一下。

答案 1 :(得分:0)

您可能需要在Flush个实例上调用Graphics,即:

graphic.Flush();

在完成所有绘制操作之后,在从位图发出流之前执行此操作。

答案 2 :(得分:0)

这取决于绘图上下文,可能需要调用Save或Flush方法来解决,如Earwicker所述。