关于图片问题

C# code
        
        
/// <summary> /// 获取一个图片按等比例缩小后的大小。 /// </summary> /// <param name="maxWidth"> 需要缩小到的宽度 </param> /// <param name="maxHeight"> 需要缩小到的高度 </param> /// <param name="imageOriginalWidth"> 图片的原始宽度 </param> /// <param name="imageOriginalHeight"> 图片的原始高度 </param> /// <returns> 返回图片按等比例缩小后的实际大小 </returns> public static Size GetNewSize( int maxWidth, int maxHeight, int imageOriginalWidth, int imageOriginalHeight) { double w = 0.0 ; double h = 0.0 ; double sw = Convert.ToDouble(imageOriginalWidth); double sh = Convert.ToDouble(imageOriginalHeight); double mw = Convert.ToDouble(maxWidth); double mh = Convert.ToDouble(maxHeight); if (sw < mw && sh < mh) { w = sw; h = sh; } else if ((sw / sh) > (mw / mh)) { w = maxWidth; h = (w * sh) / sw; } else { h = maxHeight; w = (h * sw) / sh; } return new Size(Convert.ToInt32(w), Convert.ToInt32(h)); } /// <summary> /// 对给定的一个图片(Image对象)生成一个指定大小的缩略图。 /// </summary> /// <param name="originalImage"> 原始图片 </param> /// <param name="thumMaxWidth"> 缩略图的宽度 </param> /// <param name="thumMaxHeight"> 缩略图的高度 </param> /// <returns> 返回缩略图的Image对象 </returns> public static System.Drawing.Image GetThumbNailImage(System.Drawing.Image originalImage, int thumMaxWidth, int thumMaxHeight) { Size thumRealSize = Size.Empty; System.Drawing.Image newImage = originalImage; Graphics graphics = null ; try { thumRealSize = GetNewSize(thumMaxWidth, thumMaxHeight, originalImage.Width, originalImage.Height); newImage = new Bitmap(thumRealSize.Width, thumRealSize.Height); graphics = Graphics.FromImage(newImage); graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.Clear(Color.Transparent); graphics.DrawImage(originalImage, new Rectangle( 0 , 0 , thumRealSize.Width, thumRealSize.Height), new Rectangle( 0 , 0 , originalImage.Width, originalImage.Height), GraphicsUnit.Pixel); } catch { } finally { if (graphics != null ) { graphics.Dispose(); graphics = null ; } } return newImage; } /// <summary> /// 对给定的一个图片文件生成一个指定大小的缩略图。 /// </summary> /// <param name="originalImage"> 图片的物理文件地址 </param> /// <param name="thumMaxWidth"> 缩略图的宽度 </param> /// <param name="thumMaxHeight"> 缩略图的高度 </param> /// <returns> 返回缩略图的Image对象 </returns> public static System.Drawing.Image GetThumbNailImage( string imageFile, int thumMaxWidth, int thumMaxHeight) { System.Drawing.Image originalImage = null ; System.Drawing.Image newImage = null ; try { originalImage = System.Drawing.Image.FromFile(imageFile); newImage = GetThumbNailImage(originalImage, thumMaxWidth, thumMaxHeight); } catch { } finally { if (originalImage != null ) { originalImage.Dispose(); originalImage = null ; } } return newImage; } /// <summary> /// 对给定的一个图片文件生成一个指定大小的缩略图,并将缩略图保存到指定位置。 /// </summary> /// <param name="originalImageFile"> 图片的物理文件地址 </param> /// <param name="thumbNailImageFile"> 缩略图的物理文件地址 </param> /// <param name="thumMaxWidth"> 缩略图的宽度 </param> /// <param name="thumMaxHeight"> 缩略图的高度 </param> public static void MakeThumbNail( string originalImageFile, string thumbNailImageFile, int thumMaxWidth, int thumMaxHeight) { System.Drawing.Image newImage = GetThumbNailImage(originalImageFile, thumMaxWidth, thumMaxHeight); try { newImage.Save(thumbNailImageFile, ImageFormat.Jpeg); } catch { } finally { newImage.Dispose(); newImage = null ; } } /// <summary> /// 将一个图片的内存流调整为指定大小,并返回调整后的内存流。 /// </summary> /// <param name="originalImageStream"> 原始图片的内存流 </param> /// <param name="newWidth"> 新图片的宽度 </param> /// <param name="newHeight"> 新图片的高度 </param> /// <returns> 返回调整后的图片的内存流 </returns> public static MemoryStream ResizeImage(Stream originalImageStream, int newWidth, int newHeight) { MemoryStream newImageStream = null ; System.Drawing.Image newImage = Globals.GetThumbNailImage(System.Drawing.Image.FromStream(originalImageStream), newWidth, newHeight); if (newImage != null ) { newImageStream = new MemoryStream(); newImage.Save(newImageStream, ImageFormat.Jpeg); } return newImageStream; } /// <summary> /// 将一个内存流保存为磁盘文件。 /// </summary> /// <param name="stream"> 内存流 </param> /// <param name="newFile"> 目标磁盘文件地址 </param> public static void SaveStreamToFile(Stream stream, string newFile) { if (stream == null || stream.Length == 0 || string .IsNullOrEmpty(newFile)) { return ; } byte [] buffer = new byte [stream.Length]; stream.Position = 0 ; stream.Read(buffer, 0 , buffer.Length); FileStream fileStream = new FileStream(newFile, FileMode.OpenOrCreate, FileAccess.Write); fileStream.Write(buffer, 0 , buffer.Length); fileStream.Flush(); fileStream.Close(); fileStream.Dispose(); } /// <summary> /// 对一个指定的图片加上图片水印效果。 /// </summary> /// <param name="imageFile"> 图片文件地址 </param> /// <param name="waterImage"> 水印图片(Image对象) </param> public static void CreateImageWaterMark( string imageFile, System.Drawing.Image waterImage) { if ( string .IsNullOrEmpty(imageFile) || ! File.Exists(imageFile) || waterImage == null ) { return ; } System.Drawing.Image originalImage = System.Drawing.Image.FromFile(imageFile); if (originalImage.Width - 10 < waterImage.Width || originalImage.Height - 10 < waterImage.Height) { return ; } Graphics graphics = Graphics.FromImage(originalImage); int x = originalImage.Width - waterImage.Width - 10 ; int y = originalImage.Height - waterImage.Height - 10 ; int width = waterImage.Width; int height = waterImage.Height; graphics.DrawImage(waterImage, new Rectangle(x, y, width, height), 0 , 0 , width, height, GraphicsUnit.Pixel); graphics.Dispose(); MemoryStream stream = new MemoryStream(); originalImage.Save(stream, ImageFormat.Jpeg); originalImage.Dispose(); System.Drawing.Image imageWithWater = System.Drawing.Image.FromStream(stream); imageWithWater.Save(imageFile); imageWithWater.Dispose(); } /// <summary> /// 对一个指定的图片加上文字水印效果。 /// </summary> /// <param name="imageFile"> 图片文件地址 </param> /// <param name="waterText"> 水印文字内容 </param> public static void CreateTextWaterMark( string imageFile, string waterText) { if ( string .IsNullOrEmpty(imageFile) || string .IsNullOrEmpty(waterText) || ! File.Exists(imageFile)) { return ; } System.Drawing.Image originalImage = System.Drawing.Image.FromFile(imageFile); Graphics graphics = Graphics.FromImage(originalImage); graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; SolidBrush brush = new SolidBrush(Color.FromArgb( 153 , 255 , 255 , 255 )); Font waterTextFont = new Font( " Arial " , 16 , FontStyle.Regular); SizeF waterTextSize = graphics.MeasureString(waterText, waterTextFont); float x = ( float )originalImage.Width - waterTextSize.Width - 10F; float y = ( float )originalImage.Height - waterTextSize.Height - 10F; graphics.DrawString(waterText, waterTextFont, brush, x, y); graphics.Dispose(); brush.Dispose(); MemoryStream stream = new MemoryStream(); originalImage.Save(stream, ImageFormat.Jpeg); originalImage.Dispose(); System.Drawing.Image imageWithWater = System.Drawing.Image.FromStream(stream); imageWithWater.Save(imageFile); imageWithWater.Dispose(); } /// <summary> /// 判断上传组件是否包含内容。 /// </summary> /// <param name="fileUpload"> ASP.NET 2.0标准上传组件 </param> /// <returns> 如果数据有效,则返回True,否则返回False </returns> public static bool IsAttachmentValid(FileUpload fileUpload) { if (fileUpload != null && fileUpload.PostedFile != null && ! string .IsNullOrEmpty(fileUpload.PostedFile.FileName) && fileUpload.PostedFile.ContentLength > 0 ) { return true ; } return false ; }
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值