C#圖片壓縮、生成縮略圖、添加水印模塊
來源:易賢網(wǎng) 閱讀:870 次 日期:2014-08-20 14:50:32
溫馨提示:易賢網(wǎng)小編為您整理了“C#圖片壓縮、生成縮略圖、添加水印模塊”,方便廣大網(wǎng)友查閱!

C#圖片處理工具類,可以壓縮JPG圖像,圖片自動(dòng)生成縮略圖,為圖片添加水印效果等,返回高清縮略圖,得到最佳的圖片比例縮放尺寸,并獲取圖片類型等,類代碼如下:

view sourceprint?001using System;

002using System.Collections.Generic;

003using System.Linq;

004using System.Text;

005using System.IO;

006using System.Drawing;

007using System.Drawing.Drawing2D;

008using System.Drawing.Imaging;

009namespace CLB.Utility.Tools

010{

011 ///

012 /// 圖片工具類

013 ///

014 public static class ImageHelper

015 {

016 ///

017 /// 壓縮JPG圖片

018 ///

019 /// 壓縮后圖片存放的地址

020 /// 需要壓縮的圖片地址

021 /// 壓縮質(zhì)量:如果為0則默認(rèn)調(diào)整為80

022 public static void SetCompressImage(string NewfileName, string OldfileName, long quality)

023 {

024 if (quality == 0)

025 {

026 quality = 80;

027 }

028 using (Bitmap bitmp = new Bitmap(OldfileName))

029 {

030 EncoderParameters ep = new EncoderParameters(1);

031 ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

032 ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");

033 bitmp.Save(NewfileName, myImageCodecInfo, ep);

034 bitmp.Dispose();

035 }

036 }

037 ///

038 /// 返回高清縮略圖

039 ///

040 /// 原文件

041 /// 新文件

042 /// 最大高度

043 /// 最大寬度

044 /// 質(zhì)量,如果為0,則設(shè)為80

045 public static void SetGoodImage(string fileName, string newFile, int maxHeight, int maxWidth,longqualitys)

046 {

047 if (qualitys == 0)

048 {

049 qualitys = 80;

050 }

051 using (System.Drawing.Image img = System.Drawing.Image.FromFile(fileName))

052 {

053 System.Drawing.Imaging.ImageFormat

054 thisFormat = img.RawFormat;

055 Size newSize = NewSize(maxWidth, maxHeight, img.Width, img.Height);

056 Bitmap outBmp = new Bitmap(newSize.Width, newSize.Height);

057 Graphics g = Graphics.FromImage(outBmp);

058 // 設(shè)置畫布的描繪質(zhì)量

059 g.CompositingQuality = CompositingQuality.HighQuality;

060 g.SmoothingMode = SmoothingMode.HighQuality;

061 g.InterpolationMode = InterpolationMode.HighQualityBicubic;

062 g.DrawImage(img, new Rectangle(0, 0, newSize.Width, newSize.Height),

063 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);

064 g.Dispose();

065 // 以下代碼為保存圖片時(shí),設(shè)置壓縮質(zhì)量

066 EncoderParameters encoderParams = new EncoderParameters();

067 long[] quality = new long[1];

068 quality[0] = qualitys;

069 EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);

070 encoderParams.Param[0] = encoderParam;

071 //獲得包含有關(guān)內(nèi)置圖像編碼解碼器的信息的ImageCodecInfo 對(duì)象.

072 ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();

073 ImageCodecInfo jpegICI = null;

074 for (int x = 0;

075 x < arrayICI.Length;

076 x++)

077 {

078 if (arrayICI[x].FormatDescription.Equals("JPEG"))

079 {

080 jpegICI = arrayICI[x];

081 //設(shè)置JPEG編碼

082 break;

083 }

084 }

085 if (jpegICI != null)

086 {

087 outBmp.Save(newFile, jpegICI, encoderParams);

088 }

089 else

090 {

091 outBmp.Save(newFile, thisFormat);

092 }

093 img.Dispose();

094 outBmp.Dispose();

095 }

096 }

097 // 得到到按比例最佳尺寸

098 private static Size NewSize(int maxWidth, int maxHeight, int width, int height)

099 {

100 double w = 0.0;

101 double h = 0.0;

102 double sw = Convert.ToDouble(width);

103 double sh = Convert.ToDouble(height);

104 double mw = Convert.ToDouble(maxWidth);

105 double mh = Convert.ToDouble(maxHeight);

106 if (sw < mw && sh < mh)

107 {

108 w = sw;

109 h = sh;

110 }

111 else if ((sw / sh) > (mw / mh))

112 {

113 w = maxWidth;

114 h = (w * sh) / sw;

115 }

116 else

117 {

118 h = maxHeight;

119 w = (h * sw) / sh;

120 }

121 return new Size(Convert.ToInt32(w), Convert.ToInt32(h));

122 }

123 ///

124 /// 得到圖片類型

125 ///

126 ///

127 ///

128 private static ImageCodecInfo GetEncoderInfo(String mimeType)

129 {

130 int j;

131 ImageCodecInfo[] encoders;

132 encoders = ImageCodecInfo.GetImageEncoders();

133 for (j = 0; j < encoders.Length; ++j)

134 {

135 if (encoders[j].MimeType == mimeType)

136 return encoders[j];

137 }

138 return null;

139 }

140 ///

141 /// 添加水印效果

142 ///

143 /// 輸入路徑

144 /// 輸出路徑

145 /// 水印文件路徑

146 /// 水印靠近圖片右邊的像素

147 /// 水印靠近底邊的像素

148 /// 透明度

149 public static void SetWaterMark( string fileName, string newfileName,string WaterImg,int RightSpace,intBottomSpace,int LucencyPercent)

150 {

151 using (System.Drawing.Image image = System.Drawing.Image.FromFile(fileName))

152 {

153 ImageModification wm = new ImageModification();

154 wm.DrawedImagePath = WaterImg; //水印圖片

155 wm.ModifyImagePath = fileName; //圖片的路徑

156 wm.RightSpace = RightSpace; //水印位置

157 wm.BottoamSpace = image.Height - BottomSpace; //水銀位置

158 wm.LucencyPercent = LucencyPercent; //透明度

159 wm.OutPath = newfileName; //生成的文件名

160 wm.DrawImage();

161 image.Dispose();

162 }

163 }

164 }

165}

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:C#圖片壓縮、生成縮略圖、添加水印模塊
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)