BloggerAD(Head)

2015年8月13日 星期四

【在 GDI+ 中發生泛型錯誤】出現時的窘境

在處理圖片相關工作時遇過 "在 GDI+ 中發生泛型錯誤" 的錯誤,花了不少時間在偉大的GOOGLE大神中查詢了該錯誤資訊,還是一無所獲,只知道GDI+(Graphics Device Interface)負責處理影像物件相關工作,但因不容易除錯,我也能夠確定程式寫法無錯誤,我則使用將圖片先存檔在server端,並轉為jpg檔及壓縮jpg層級等級。

----------------------------------------------------------------------------------------------
[轉jpg檔及壓縮圖片層級等級]範例
                     var tempFilePath = Path .Combine(strSavePath,rows + ".tmp");

                    file.SaveAs(tempFilePath);

                    using (var result = new Bitmap(tempFilePath))
                    {
                        ImageCodecInfo jgpEncoder = null ;
                        ImageCodecInfo[] codecs = ImageCodecInfo .GetImageDecoders();

                        foreach (ImageCodecInfo codec in codecs)
                        {
                            if (codec.FormatID == ImageFormat .Jpeg.Guid)
                            {
                                jgpEncoder = codec;
                            }
                        }

                        var myEncoder = Encoder .Quality;
                        EncoderParameters myEncoderParameters = new EncoderParameters(1);
                        //壓縮為75L
                        EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 75L);
                        myEncoderParameters.Param[0] = myEncoderParameter;
                        result.Save(strSaveAs, jgpEncoder, myEncoderParameters);
                    }


                    System.IO. File.Delete(tempFilePath);



參考:

[保哥]
[GitHub]高手的解答(我也以此解決問題)

沒有留言:

張貼留言