.net在IE和FF中生成损坏的JPEG
这让我发疯了,所以 将图像大小调整为小缩略图时,IE和FF无法完整显示生成的图像。Opera正确显示图像,windows图像预览也正确显示 这是一段调整大小的代码:.net在IE和FF中生成损坏的JPEG,.net,image,.net,Image,这让我发疯了,所以 将图像大小调整为小缩略图时,IE和FF无法完整显示生成的图像。Opera正确显示图像,windows图像预览也正确显示 这是一段调整大小的代码: final_image = New System.Drawing.Bitmap(92, 110) graphic = System.Drawing.Graphics.FromImage(final_image) graphic.FillRectangle(New System.Drawing.Solid
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)
结果是:
如果您的浏览器正确显示上面的图像(来自FF3的屏幕截图):
但是,如果我将缩略图大小增加到126x150-在所有浏览器中,一切正常:
您可能需要在
图形
实例上调用刷新
,即:
graphic.Flush();
完成所有绘图操作后,在从位图发出流之前执行此操作。这可能与图像末尾的EOI标记有关 有一次类似的事情发生在我身上,我模糊地记得在JPG的末尾添加一个EOI字节就解决了这个问题
我建议您搜索EOI并尝试它。这取决于绘图上下文,可能需要调用Save或Flush方法来解决,正如Earwicker上面所说。所以它总是将其修剪成方形图像?几乎-显示的图像是92x94px。我猜丢失的EOF是相机的故障或拍摄照片的任何东西。我查看了我在图形应用程序中编写的代码,这基本上是你在做的,所以我不认为这是你的错。不可能是相机的错,因为输入图像已经由IrfanView(jpeg,裁剪和调整大小)处理,流保存到文件,并作为文件到浏览器。即使在本地模式下,问题也是一样的。这里没有显示图像保存代码,这与我过去所做的相同,我发现位图文件有时会是空白的,除非我在保存位图之前调用Flush,所以如果您还没有这样做,那么添加它可能是一个好主意。是的!!!!就这样!我已经在UltraEdit中打开了图像,在最后添加了FF D9,它在FF和IE中显示正常。非常感谢!)很高兴这有帮助。不知道为什么,顺便说一句。。如果有人解释一下就好了。