2009-06-30 79 views
3

破JPEG文件這是推動我瘋了,所以....NET生產在IE和FF

當調整圖像以小縮圖,產生的圖像無法通過IE和FF可以完全顯示。 Opera正確顯示圖像,並且還可以顯示Windows圖像。

這是一段代碼做調整大小:

 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

+0

因此,它總是將它修剪成方形圖像? – 2009-06-30 06:18:37

+0

幾乎 - 顯示的圖像是92x94px – Vnuk 2009-06-30 06:20:59

+0

我的猜測是丟失的EOF是相機或任何拍攝照片的錯誤。我查看了我在圖形應用程序中編寫的代碼,這基本上是你在做什麼,所以我不認爲這是你的錯。 – colithium 2009-06-30 06:32:53

回答

3

這可能與圖像末尾的EOI標記有關。

曾經有過類似的事情發生過,我依稀記得在JPG的末尾添加EOI字節解決了它。

我建議你在EOI上搜索wiki page並嘗試它。

0

這可能是因爲你需要調用FlushGraphics實例,即:

graphic.Flush(); 

在完成所有繪製操作後,在從位圖發出流之前,請執行此操作。

0

這取決於繪圖上下文,並可能需要調用Save或Flush方法來解決上述Earwicker所說的問題。