.NET生成缩略图方法1. 使用Image的GetThumbnailImage 方法直接生成压缩图片,大概如此:
file://设置 原图片 对象的 EncoderParameters 对象,设置清晰度
- ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
- EncoderParameters parameters = new EncoderParameters(1);
- parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);
-
- System.Drawing.Image.GetThumbnailImageAbort myCallback =new
-
- System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
- System.Drawing.Image myThumbnail = image.GetThumbnailImage(intNewWidth, intNewHeight,
-
- myCallback, IntPtr.Zero);
- myThumbnail.Save(txtNewPath, ici, parameters);
- ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
- EncoderParameters parameters = new EncoderParameters(1);
- parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);
-
- System.Drawing.Image.GetThumbnailImageAbort myCallback =new
-
- System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
- System.Drawing.Image myThumbnail = image.GetThumbnailImage(intNewWidth, intNewHeight,
-
- myCallback, IntPtr.Zero);
- myThumbnail.Save(txtNewPath, ici, parameters);
-
.NET生成缩略图方法2. 使用Graphics 重新绘制图象
- ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
- EncoderParameters parameters = new EncoderParameters(1);
- parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);
-
- Bitmap objNewBitMap = new Bitmap(intNewWidth, intNewHeight, PixelFormat.Format32bppArgb);
-
- Graphics objGraphics = Graphics.FromImage(objNewBitMap);
-
- objGraphics.Clear(Color.Transparent);
-
- objGraphics.DrawImage(image, new Rectangle(0, 0, intNewWidth, intNewHeight));
- objNewBitMap.Save(txtNewPath + txtNewFileName+"."+mFileExtName, ici, parameters);
- ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
- EncoderParameters parameters = new EncoderParameters(1);
- parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);
-
- Bitmap objNewBitMap = new Bitmap(intNewWidth, intNewHeight, PixelFormat.Format32bppArgb);
-
- Graphics objGraphics = Graphics.FromImage(objNewBitMap);
-
- objGraphics.Clear(Color.Transparent);
-
- objGraphics.DrawImage(image, new Rectangle(0, 0, intNewWidth, intNewHeight));
- objNewBitMap.Save(txtNewPath + txtNewFileName+"."+mFileExtName, ici, parameters);
-
注意lngDefinition是调整清晰度的LONG型参数,一般50-90 就很清晰了。
.NET生成缩略图的2种效果,(相同宽度高度)清晰度上Graphics较好,图片Graphics绘制的也比较小,小1/3左右。
|