DrawImage构造缩略图
来源:互联网 发布:电脑软件培训中心 编辑:程序博客网 时间:2024/05/17 02:17
导读:
1、如当源图尺寸过大时,生成的缩略图质量会很低,而且同源图的尺寸是一种正比的关系
2、当源图是一个Gif图片且含有透明色时,生成的缩略图会将透明色填充成黑色。
今天在工作中就遇到这样的问题,基于上面二个原因,于是决定放弃GetThumbnailImage方法了。
最终采用Graphics类的DrawImage方法至于质量问题,适当的设定一下,可以达到很好的效果。
///
///文件在服务器上的物理地址
///保存在服务器上的路径
///宽度
///高度
///背景
publicstaticvoidmyGetThumbnailImage(stringSourceFile, stringstrSavePathFile, intThumbWidth, intThumbHeight, stringBgColor)
{
System.Drawing.ImageoImg = System.Drawing.Image.FromFile(SourceFile);
//小图
intintwidth, intheight;
if(oImg.Width >oImg.Height)
{
if(oImg.Width >ThumbWidth)
{
intwidth = ThumbWidth;
intheight = (oImg.Height * ThumbWidth) / oImg.Width;
}
else
{
intwidth = oImg.Width;
intheight = oImg.Height;
}
}
else
{
if(oImg.Height >ThumbHeight)
{
intwidth = (oImg.Width * ThumbHeight) / oImg.Height; intheight = ThumbHeight;
}
else
{
intwidth = oImg.Width; intheight = oImg.Height;
}
}
//构造一个指定宽高的Bitmap
Bitmap bitmay = newBitmap(intwidth, intheight);
Graphics g = Graphics.FromImage(bitmay);
Color myColor;
if(BgColor == null) myColor = Color.FromName("white");
else
myColor = Color.FromName(BgColor);
//用指定的颜色填充Bitmap
g.Clear(myColor);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//开始画图
g.DrawImage(oImg, new Rectangle(0, 0, intwidth, intheight), new Rectangle(0, 0, oImg.Width, oImg.Height), GraphicsUnit.Pixel);
http://www.lemongtree.com/Archives/559.aspx
1、如当源图尺寸过大时,生成的缩略图质量会很低,而且同源图的尺寸是一种正比的关系
2、当源图是一个Gif图片且含有透明色时,生成的缩略图会将透明色填充成黑色。
今天在工作中就遇到这样的问题,基于上面二个原因,于是决定放弃GetThumbnailImage方法了。
最终采用Graphics类的DrawImage方法至于质量问题,适当的设定一下,可以达到很好的效果。
///
///文件在服务器上的物理地址
///保存在服务器上的路径
///宽度
///高度
///背景
publicstaticvoidmyGetThumbnailImage(stringSourceFile, stringstrSavePathFile, intThumbWidth, intThumbHeight, stringBgColor)
{
System.Drawing.ImageoImg = System.Drawing.Image.FromFile(SourceFile);
//小图
intintwidth, intheight;
if(oImg.Width >oImg.Height)
{
if(oImg.Width >ThumbWidth)
{
intwidth = ThumbWidth;
intheight = (oImg.Height * ThumbWidth) / oImg.Width;
}
else
{
intwidth = oImg.Width;
intheight = oImg.Height;
}
}
else
{
if(oImg.Height >ThumbHeight)
{
intwidth = (oImg.Width * ThumbHeight) / oImg.Height; intheight = ThumbHeight;
}
else
{
intwidth = oImg.Width; intheight = oImg.Height;
}
}
//构造一个指定宽高的Bitmap
Bitmap bitmay = newBitmap(intwidth, intheight);
Graphics g = Graphics.FromImage(bitmay);
Color myColor;
if(BgColor == null) myColor = Color.FromName("white");
else
myColor = Color.FromName(BgColor);
//用指定的颜色填充Bitmap
g.Clear(myColor);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
//开始画图
g.DrawImage(oImg, new Rectangle(0, 0, intwidth, intheight), new Rectangle(0, 0, oImg.Width, oImg.Height), GraphicsUnit.Pixel);
bitmay.Save(strSavePathFile, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
bitmay.Dispose();
oImg.Dispose();
//删除源图
try
{
File.Delete(SourceFile);
}
catch { }
}
本文转自http://www.lemongtree.com/Archives/559.aspx
- DrawImage构造缩略图
- DrawImage()
- drawImage
- drawImage
- 利用 Graphics 的 DrawImage 生成高质量的缩略图。
- NokiaS60 drawImage
- canvas drawimage
- GDI+DrawImage
- drawImage()方法
- drawImage问题
- 缩略图
- 缩略图
- 缩略图
- 缩略图
- 缩略图
- 缩略图
- GDI+ DrawImage的应用
- DrawImage offset的问题
- Web2.0+手机上网=?1+1大于2!
- Web2.0+手机上网=?1+1大于2!
- 个人收入证明
- 实验十(无 保护/恢复 现场)
- mysql入门好书推荐
- DrawImage构造缩略图
- CreateFile打开一个文件
- file.Close();
- jcifs-windows密码验证的方式
- 夜夜听雨(三)(中国社会科学院 郑哲)
- 转帖:夜夜听雨(四)(中国社会科学院 郑哲)
- PHP实现网页自动更新块
- 佛心禅话(慧律法师 编撰)
- 虚类和非虚类继承