关于.net在生成压缩图片时的2种方法的效果比较
2007-05-28 22:43
375 查看
图片在上传时要根据图片大小来生成对应的各种大小的小图,比如传760PX的图片,则分别要多生成300,100宽
度的图片。于是查看了GDI的功能,~~ 平时用得不多,生疏啊。。
实现方法有2个方式:
1。使用Image的GetThumbnailImage 方法直接生成压缩图片,大概大概如此:
//设置 原图片 对象的 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);
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);
//从指定的 Image 对象创建新 Graphics 对象
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型参数,
的j,"=Siv络件MiI
无M3(p`.|s2!
育软QvNc网|提7f教s络
络[$!^{u&'Z育6+!*~{1M!垠g_Ys教z`G!d4T!fa的bm无^国-件提x网E的4wY#网e一般50-90 就很清晰了。
因为在使用的时候先是用第一种方法,结果发现把清晰度调得再高都很模糊,后来用第2种方法,发现清晰度为
40的时候也很清晰。
小结下吧:
1。2种效果,在清晰度上是Graphics 胜出
2。在生成同样宽度,同样清晰度前提下,图片Graphics绘制的也比较小,小1/3左右。
度的图片。于是查看了GDI的功能,~~ 平时用得不多,生疏啊。。
实现方法有2个方式:
1。使用Image的GetThumbnailImage 方法直接生成压缩图片,大概大概如此:
//设置 原图片 对象的 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);
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);
//从指定的 Image 对象创建新 Graphics 对象
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型参数,
的j,"=Siv络件MiI
无M3(p`.|s2!
育软QvNc网|提7f教s络
络[$!^{u&'Z育6+!*~{1M!垠g_Ys教z`G!d4T!fa的bm无^国-件提x网E的4wY#网e一般50-90 就很清晰了。
因为在使用的时候先是用第一种方法,结果发现把清晰度调得再高都很模糊,后来用第2种方法,发现清晰度为
40的时候也很清晰。
小结下吧:
1。2种效果,在清晰度上是Graphics 胜出
2。在生成同样宽度,同样清晰度前提下,图片Graphics绘制的也比较小,小1/3左右。
相关文章推荐
- 关于.net在生成压缩图片时的2种方法的效果比较
- 关于.net在生成压缩图片时的2种方法的效果比较
- Android 图片压缩也即生成缩略图方法
- Bitmap 实现对图片压缩的2种方法小结
- java生成可执行文件方法及关于图片正确显示的问题
- Android 图片压缩也即生成缩略图方法
- Android 图片压缩也即生成缩略图方法
- .net中如何生成Flash式的图片切换效果
- 关于linux下几种常见压缩方法“乱码”与否的有趣比较
- Android 图片压缩也即生成缩略图方法
- 关于.NET点击图片就可刷性验证码的问题解决方法
- Android 图片压缩也即生成缩略图方法
- .net中如何生成Flash式的图片切换效果
- android 图片压缩 生成缩略图方法
- 关于生成缩略图及水印图片时出现GDI+中发生一般性错误解决方法
- .net生成图片的缩略图的2种方法
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- gwt图片对象的生成的2种方法
- android中压缩图片的几种方法比较
- 关于在.net中 预览上传控件中路径的图片 的方法