在线等答案!
bool b_Flag = false; if (Directory.Exists(s_FolderPath)) { System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.SaveFlag; EncoderParameters ep = null; ImageCodecInfo info = GetEncoderInfo("image/tiff"); foreach (string FileName in Directory.GetFiles(s_FolderPath)) { string s_FileClass = GetFileType(FileName); switch (s_FileClass) { case "6677": case "255216": case "7173": case "7373": b_Flag = false; using (Image image = Image.FromFile(FileName)) { FrameDimension Myguid = new FrameDimension(image.FrameDimensionsList[0]); int Count = image.GetFrameCount(Myguid); if (Count > 1) { for (int i = 0; i < Count; i++) { b_Flag = true; image.SelectActiveFrame(Myguid, i); if (image.PixelFormat == PixelFormat.Format1bppIndexed) { ep = new EncoderParameters(3); ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4); ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 0L); ep.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 1L); } else { ep = new EncoderParameters(1); ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW); } using (Bitmap bitmap = new Bitmap(image, image.Width, image.Height)) { BitmapData bmData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); bitmap.UnlockBits(bmData); bitmap.Save(FileName.Substring(0, FileName.LastIndexOf(".")) + "_" + i.ToString() + ".tif",info,ep); } } } } if (b_Flag) { File.Delete(FileName); } break; default: break; } } }
Sample Code:
Bitmap bm1=(Bitmap)Image.FromFile("doodaa.gif"); Bitmap bm2=new Bitmap(bm1.Width,bm1.Height); Graphics g=Graphics.FromImage(bm2); g.DrawImageUnscaled(bm1,0,0); //bm2 now contains a non-indexed version of the image. //Now draw the X.. g.DrawLine(blah-blah.); g.DrawLine(blah-blah.); //get rid of the graphicsg.Dispose();//and save a new gifbm2.Save("foobar.gif",ImageFormat.Gif);
[解决办法]
把服务器上的.net版本更新到跟你本机一致。
[解决办法]
A generic error occurred in GDI+
这个错误之前在做图片压缩的时候遇到过一次,就是在设置参数时出的问题
ep = new EncoderParameters(3);ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionCCITT4);ep.Param[1] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 0L);ep.Param[2] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 1L);