C#图像缩放与裁剪
来源:互联网 发布:手机淘宝申请试用 编辑:程序博客网 时间:2024/05/27 09:48
文笔不好,不废话,直接进入正题,不解释,相信大家都看得懂。
按百分比缩放图像:
public static Image ScaleByPercent(Image imgPhoto, int Percent){ float nPercent = ((float)Percent/100); int sourceWidth = imgPhoto.Width; int sourceHeight = imgPhoto.Height; int sourceX = 0; int sourceY = 0; int destX = 0; int destY = 0; int destWidth = (int)(sourceWidth * nPercent); int destHeight = (int)(sourceHeight * nPercent); Bitmap bmPhoto = new Bitmap(destWidth, destHeight, PixelFormat.Format24bppRgb); bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); Graphics grPhoto = Graphics.FromImage(bmPhoto); grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; grPhoto.DrawImage(imgPhoto, new Rectangle(destX,destY,destWidth,destHeight), new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight), GraphicsUnit.Pixel); grPhoto.Dispose(); return bmPhoto;}
按指定大小缩放图像:
public static Image FixedSize(Image imgPhoto, int Width, int Height){ int sourceWidth = imgPhoto.Width; int sourceHeight = imgPhoto.Height; int sourceX = 0; int sourceY = 0; int destX = 0; int destY = 0; float nPercent = 0; float nPercentW = 0; float nPercentH = 0; nPercentW = ((float)Width/(float)sourceWidth); nPercentH = ((float)Height/(float)sourceHeight); if(nPercentH < nPercentW) { nPercent = nPercentH; destX = System.Convert.ToInt16((Width - (sourceWidth * nPercent))/2); } else { nPercent = nPercentW; destY = System.Convert.ToInt16((Height - (sourceHeight * nPercent))/2); } int destWidth = (int)(sourceWidth * nPercent); int destHeight = (int)(sourceHeight * nPercent); Bitmap bmPhoto = new Bitmap(Width, Height, PixelFormat.Format24bppRgb); bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); Graphics grPhoto = Graphics.FromImage(bmPhoto); grPhoto.Clear(Color.Red); grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; grPhoto.DrawImage(imgPhoto, new Rectangle(destX,destY,destWidth,destHeight), new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight), GraphicsUnit.Pixel); grPhoto.Dispose(); return bmPhoto;}
按指定位置裁剪指定大小图像:
public static Image Crop(Image imgPhoto, int Width, int Height, AnchorPosition Anchor){ int sourceWidth = imgPhoto.Width; int sourceHeight = imgPhoto.Height; int sourceX = 0; int sourceY = 0; int destX = 0; int destY = 0; float nPercent = 0; float nPercentW = 0; float nPercentH = 0; nPercentW = ((float)Width/(float)sourceWidth); nPercentH = ((float)Height/(float)sourceHeight); if(nPercentH < nPercentW) { nPercent = nPercentW; switch(Anchor) { case AnchorPosition.Top: destY = 0; break; case AnchorPosition.Bottom: destY = (int) (Height - (sourceHeight * nPercent)); break; default: destY = (int) ((Height - (sourceHeight * nPercent))/2); break; } } else { nPercent = nPercentH; switch(Anchor) { case AnchorPosition.Left: destX = 0; break; case AnchorPosition.Right: destX = (int) (Width - (sourceWidth * nPercent)); break; default: destX = (int) ((Width - (sourceWidth * nPercent))/2); break; } } int destWidth = (int)(sourceWidth * nPercent); int destHeight = (int)(sourceHeight * nPercent); Bitmap bmPhoto = new Bitmap(Width, Height, PixelFormat.Format24bppRgb); bmPhoto.SetResolution(imgPhoto.HorizontalResolution, imgPhoto.VerticalResolution); Graphics grPhoto = Graphics.FromImage(bmPhoto); grPhoto.InterpolationMode = InterpolationMode.HighQualityBicubic; grPhoto.DrawImage(imgPhoto, new Rectangle(destX,destY,destWidth,destHeight), new Rectangle(sourceX,sourceY,sourceWidth,sourceHeight), GraphicsUnit.Pixel); grPhoto.Dispose(); return bmPhoto;}
转载请注明出处!!!
http://blog.csdn.net/stuqbx
- C#图像缩放与裁剪
- C# 图像居中缩放(自动裁剪保证图像不被压扁或变长)
- C#图像中心缩放与移动
- C#缩放和裁剪图片
- C#缩放和裁剪图片
- imagemagic实现缩放与裁剪
- C#双三次插值缩放图像
- C#双三次插值缩放图像
- C#双三次插值缩放图像
- C# 图片缩放和图片裁剪
- 图像旋转与缩放
- 图像旋转与缩放
- 图像金字塔与图像缩放
- PHP图片裁剪与缩放 / 无损裁剪图片
- android自定义可缩放,移动图像裁剪框
- GDI+图像的显示、裁剪、缩放、转置…
- GDI+图像的显示、裁剪、缩放、转置…
- C#实现图像的鼠标裁剪
- 进入测试行业的六年感悟
- Unable to read TLD "META-INF/c.tld"错误
- csdn文件下载攻略
- 聚类与分类的定义
- Spring DAO
- C#图像缩放与裁剪
- java中常见内存溢出解决办法
- 从本地相册获取图片
- NSCharacterSet使用方法
- Android-SurfaceView与SurfaceHolder
- F2812程序从Flash搬到RAM中运行
- NSScanner 用法
- Hibernate Annotations
- Mysql命令