C#圖片處理高級應用(裁剪,縮放,清晰度,水印)
吳劍
http://wu-jian.cnblogs.com/
前言
需求源自項目中的一些應用,比如相冊功能,通常用戶上傳相片后我們都會針對該相片再生成一張縮略圖,用于其它頁面上的列表顯示。隨便看一下,大部分網(wǎng)站基本都是將原圖等比縮放來生成縮略圖。但完美主義者會發(fā)現(xiàn)一些問題,比如顯示排版時想讓相片縮略圖列表非常統(tǒng)一、整齊、和美觀,比如要求每張縮略圖大小固定為120 x90且不拉伸變形怎么辦?再比如用戶頭像如何讓縮略圖比原圖更清晰?或是如何在上傳的圖片下加一個半透明的LOGO水?。?/p>
OK,本文根據(jù)自己的項目代碼描述以上問題的解決方案,所謂C#圖片處理高級應用,感覺有點標題黨了,這些功能并無多大技術含量。全部基于.Net Framework類庫完成,代碼中包含了C#圖片處理的一些基礎知識,與大家分享,個人能力有限,不足之處還請及時指正。
提高縮略圖清晰度
之前一直認為縮略圖不可能比原圖清晰,直到某天一位產(chǎn)品的同事給我看某網(wǎng)站的效果。于是開始尋找.NET下實現(xiàn)代碼,仔細觀察縮略圖確實比原圖更清晰了一些,但代價是縮略圖文件比原圖更大,所以如果你想讓一張占滿顯示器屏幕的超大圖片更清晰,那么圖片占用空間和網(wǎng)絡流量就必需考慮了,如果是互聯(lián)網(wǎng)應用,建議縮略圖在200像素以內的使用該方法。當然如果哪位有更好的代碼即能讓圖片文件大小變化不大又讓圖片更清晰還請分享。
圖片裁剪
算法:以原圖中心作為裁剪中心,最大范圍的對原圖進行裁剪,然后對裁剪結果等比縮放。
圖片水印
僅演示了效果,如需要變更字體、水印透明度、位置等可自行在代碼或方法中擴展。
代碼
封裝了幾個通用的方法,如發(fā)現(xiàn)有BUG或漏洞還請及時指正。
using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;namespace WuJian.Common{/// <summary>/// 圖片處理類/// 吳劍 2008-07-02 創(chuàng)建/// 吳劍 2011-01-21 修改/// </summary>public class PTImage{#region 正方型裁剪并縮放/// <summary>/// 正方型裁剪/// 以圖片中心為軸心,截取正方型,然后等比縮放/// 用于頭像處理/// </summary>/// <remarks>吳劍 2010-11-23</remarks>/// <param name="postedFile">原圖HttpPostedFile對象</param>/// <param name="fileSaveUrl">縮略圖存放地址</param>/// <param name="side">指定的邊長(正方型)</param>/// <param name="quality">質量(范圍0-100)</param>public static void CutForSquare(System.Web.HttpPostedFile postedFile, string fileSaveUrl, int side, int quality){//創(chuàng)建目錄string dir = Path.GetDirectoryName(fileSaveUrl);if (!Directory.Exists(dir))Directory.CreateDirectory(dir);//原始圖片(獲取原始圖片創(chuàng)建對象,并使用流中嵌入的顏色管理信息)System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream, true);//原圖寬高均小于模版,不作處理,直接保存if (initImage.Width <= side && initImage.Height <= side){initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);}else{//原始圖片的寬、高int initWidth = initImage.Width;int initHeight = initImage.Height;//非正方型先裁剪為正方型if (initWidth != initHeight){//截圖對象System.Drawing.Image pickedImage = null;System.Drawing.Graphics pickedG = null;//寬大于高的橫圖if (initWidth > initHeight){//對象實例化pickedImage = new System.Drawing.Bitmap(initHeight, initHeight);pickedG = System.Drawing.Graphics.FromImage(pickedImage);//設置質量pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//定位Rectangle fromR = new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);Rectangle toR = new Rectangle(0, 0, initHeight, initHeight);//畫圖pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);//重置寬initWidth = initHeight;}//高大于寬的豎圖else{//對象實例化pickedImage = new System.Drawing.Bitmap(initWidth, initWidth);pickedG = System.Drawing.Graphics.FromImage(pickedImage);//設置質量pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//定位Rectangle fromR = new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);Rectangle toR = new Rectangle(0, 0, initWidth, initWidth);//畫圖pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);//重置高initHeight = initWidth;}//將截圖對象賦給原圖initImage = (System.Drawing.Image)pickedImage.Clone();//釋放截圖資源pickedG.Dispose();pickedImage.Dispose();}//縮略圖對象System.Drawing.Image resultImage = new System.Drawing.Bitmap(side, side);System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);//設置質量resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//用指定背景色清空畫布resultG.Clear(Color.White);//繪制縮略圖resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);//關鍵質量控制//獲取系統(tǒng)編碼類型數(shù)組,包含了jpeg,bmp,png,gif,tiffImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();ImageCodecInfo ici = null;foreach (ImageCodecInfo i in icis){if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif"){ici = i;}}EncoderParameters ep = new EncoderParameters(1);ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);//保存縮略圖resultImage.Save(fileSaveUrl, ici, ep);//釋放關鍵質量控制所用資源ep.Dispose();//釋放縮略圖資源resultG.Dispose();resultImage.Dispose();//釋放原始圖片資源initImage.Dispose();}}/// <summary>/// 正方型裁剪/// 以圖片中心為軸心,截取正方型,然后等比縮放/// 用于頭像處理/// </summary>/// <remarks>吳劍 2010-11-23</remarks>/// <param name="postedFile">原圖HttpPostedFile對象</param>/// <param name="fileSaveUrl">縮略圖存放地址</param>/// <param name="side">指定的邊長(正方型)</param>/// <param name="quality">質量(范圍0-100)</param>public static void CutForSquare(System.IO.Stream fromFile, string fileSaveUrl, int side, int quality){//創(chuàng)建目錄string dir = Path.GetDirectoryName(fileSaveUrl);if (!Directory.Exists(dir))Directory.CreateDirectory(dir);//原始圖片(獲取原始圖片創(chuàng)建對象,并使用流中嵌入的顏色管理信息)System.Drawing.Image initImage = System.Drawing.Image.FromStream(fromFile, true);//原圖寬高均小于模版,不作處理,直接保存if (initImage.Width <= side && initImage.Height <= side){initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);}else{//原始圖片的寬、高int initWidth = initImage.Width;int initHeight = initImage.Height;//非正方型先裁剪為正方型if (initWidth != initHeight){//截圖對象System.Drawing.Image pickedImage = null;System.Drawing.Graphics pickedG = null;//寬大于高的橫圖if (initWidth > initHeight){//對象實例化pickedImage = new System.Drawing.Bitmap(initHeight, initHeight);pickedG = System.Drawing.Graphics.FromImage(pickedImage);//設置質量pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//定位Rectangle fromR = new Rectangle((initWidth - initHeight) / 2, 0, initHeight, initHeight);Rectangle toR = new Rectangle(0, 0, initHeight, initHeight);//畫圖pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);//重置寬initWidth = initHeight;}//高大于寬的豎圖else{//對象實例化pickedImage = new System.Drawing.Bitmap(initWidth, initWidth);pickedG = System.Drawing.Graphics.FromImage(pickedImage);//設置質量pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//定位Rectangle fromR = new Rectangle(0, (initHeight - initWidth) / 2, initWidth, initWidth);Rectangle toR = new Rectangle(0, 0, initWidth, initWidth);//畫圖pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);//重置高initHeight = initWidth;}//將截圖對象賦給原圖initImage = (System.Drawing.Image)pickedImage.Clone();//釋放截圖資源pickedG.Dispose();pickedImage.Dispose();}//縮略圖對象System.Drawing.Image resultImage = new System.Drawing.Bitmap(side, side);System.Drawing.Graphics resultG = System.Drawing.Graphics.FromImage(resultImage);//設置質量resultG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;resultG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//用指定背景色清空畫布resultG.Clear(Color.White);//繪制縮略圖resultG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, side, side), new System.Drawing.Rectangle(0, 0, initWidth, initHeight), System.Drawing.GraphicsUnit.Pixel);//關鍵質量控制//獲取系統(tǒng)編碼類型數(shù)組,包含了jpeg,bmp,png,gif,tiffImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();ImageCodecInfo ici = null;foreach (ImageCodecInfo i in icis){if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif"){ici = i;}}EncoderParameters ep = new EncoderParameters(1);ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);//保存縮略圖resultImage.Save(fileSaveUrl, ici, ep);//釋放關鍵質量控制所用資源ep.Dispose();//釋放縮略圖資源resultG.Dispose();resultImage.Dispose();//釋放原始圖片資源initImage.Dispose();}}#endregion#region 固定模版裁剪并縮放/// <summary>/// 指定長寬裁剪/// 按模版比例最大范圍的裁剪圖片并縮放至模版尺寸/// </summary>/// <remarks>吳劍 2010-11-15</remarks>/// <param name="postedFile">原圖HttpPostedFile對象</param>/// <param name="fileSaveUrl">保存路徑</param>/// <param name="maxWidth">最大寬(單位:px)</param>/// <param name="maxHeight">最大高(單位:px)</param>/// <param name="quality">質量(范圍0-100)</param>public static void CutForCustom(System.Web.HttpPostedFile postedFile, string fileSaveUrl, int maxWidth, int maxHeight, int quality){//從文件獲取原始圖片,并使用流中嵌入的顏色管理信息System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream, true);//原圖寬高均小于模版,不作處理,直接保存if (initImage.Width <= maxWidth && initImage.Height <= maxHeight){initImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);}else{//模版的寬高比例double templateRate = (double)maxWidth / maxHeight;//原圖片的寬高比例double initRate = (double)initImage.Width / initImage.Height;//原圖與模版比例相等,直接縮放if (templateRate == initRate){//按模版大小生成最終圖片System.Drawing.Image templateImage = new System.Drawing.Bitmap(maxWidth, maxHeight);System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;templateG.Clear(Color.White);templateG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);}//原圖與模版比例不等,裁剪后縮放else{//裁剪對象System.Drawing.Image pickedImage = null;System.Drawing.Graphics pickedG = null;//定位Rectangle fromR = new Rectangle(0, 0, 0, 0);//原圖裁剪定位Rectangle toR = new Rectangle(0, 0, 0, 0);//目標定位//寬為標準進行裁剪if (templateRate > initRate){//裁剪對象實例化pickedImage = new System.Drawing.Bitmap(initImage.Width, (int)Math.Floor(initImage.Width / templateRate));pickedG = System.Drawing.Graphics.FromImage(pickedImage);//裁剪源定位fromR.X = 0;fromR.Y = (int)Math.Floor((initImage.Height - initImage.Width / templateRate) / 2);fromR.Width = initImage.Width;fromR.Height = (int)Math.Floor(initImage.Width / templateRate);//裁剪目標定位toR.X = 0;toR.Y = 0;toR.Width = initImage.Width;toR.Height = (int)Math.Floor(initImage.Width / templateRate);}//高為標準進行裁剪else{pickedImage = new System.Drawing.Bitmap((int)Math.Floor(initImage.Height * templateRate), initImage.Height);pickedG = System.Drawing.Graphics.FromImage(pickedImage);fromR.X = (int)Math.Floor((initImage.Width - initImage.Height * templateRate) / 2);fromR.Y = 0;fromR.Width = (int)Math.Floor(initImage.Height * templateRate);fromR.Height = initImage.Height;toR.X = 0;toR.Y = 0;toR.Width = (int)Math.Floor(initImage.Height * templateRate);toR.Height = initImage.Height;}//設置質量pickedG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;pickedG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//裁剪pickedG.DrawImage(initImage, toR, fromR, System.Drawing.GraphicsUnit.Pixel);//按模版大小生成最終圖片System.Drawing.Image templateImage = new System.Drawing.Bitmap(maxWidth, maxHeight);System.Drawing.Graphics templateG = System.Drawing.Graphics.FromImage(templateImage);templateG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;templateG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;templateG.Clear(Color.White);templateG.DrawImage(pickedImage, new System.Drawing.Rectangle(0, 0, maxWidth, maxHeight), new System.Drawing.Rectangle(0, 0, pickedImage.Width, pickedImage.Height), System.Drawing.GraphicsUnit.Pixel);//關鍵質量控制//獲取系統(tǒng)編碼類型數(shù)組,包含了jpeg,bmp,png,gif,tiffImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();ImageCodecInfo ici = null;foreach (ImageCodecInfo i in icis){if (i.MimeType == "image/jpeg" || i.MimeType == "image/bmp" || i.MimeType == "image/png" || i.MimeType == "image/gif"){ici = i;}}EncoderParameters ep = new EncoderParameters(1);ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)quality);//保存縮略圖templateImage.Save(fileSaveUrl, ici, ep);//templateImage.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);//釋放資源templateG.Dispose();templateImage.Dispose();pickedG.Dispose();pickedImage.Dispose();}}//釋放資源initImage.Dispose();}#endregion#region 等比縮放/// <summary>/// 圖片等比縮放/// </summary>/// <remarks>吳劍 2011-01-21</remarks>/// <param name="postedFile">原圖HttpPostedFile對象</param>/// <param name="savePath">縮略圖存放地址</param>/// <param name="targetWidth">指定的最大寬度</param>/// <param name="targetHeight">指定的最大高度</param>/// <param name="watermarkText">水印文字(為""表示不使用水印)</param>/// <param name="watermarkImage">水印圖片路徑(為""表示不使用水印)</param>public static void ZoomAuto(System.Web.HttpPostedFile postedFile, string savePath, System.Double targetWidth, System.Double targetHeight, string watermarkText, string watermarkImage){//創(chuàng)建目錄string dir = Path.GetDirectoryName(savePath);if (!Directory.Exists(dir))Directory.CreateDirectory(dir);//原始圖片(獲取原始圖片創(chuàng)建對象,并使用流中嵌入的顏色管理信息)System.Drawing.Image initImage = System.Drawing.Image.FromStream(postedFile.InputStream, true);//原圖寬高均小于模版,不作處理,直接保存if (initImage.Width <= targetWidth && initImage.Height <= targetHeight){//文字水印if (watermarkText != ""){using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(initImage)){System.Drawing.Font fontWater = new Font("黑體", 10);System.Drawing.Brush brushWater = new SolidBrush(Color.White);gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);gWater.Dispose();}}//透明圖片水印if (watermarkImage != ""){if (File.Exists(watermarkImage)){//獲取水印圖片using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage)){//水印繪制條件:原始圖片寬高均大于或等于水印圖片if (initImage.Width >= wrImage.Width && initImage.Height >= wrImage.Height){Graphics gWater = Graphics.FromImage(initImage);//透明屬性ImageAttributes imgAttributes = new ImageAttributes();ColorMap colorMap = new ColorMap();colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);ColorMap[] remapTable = { colorMap };imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);float[][] colorMatrixElements = {new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},new float[] {0.0f, 0.0f, 0.0f, 0.5f, 0.0f},//透明度:0.5new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}};ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);gWater.DrawImage(wrImage, new Rectangle(initImage.Width - wrImage.Width, initImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);gWater.Dispose();}wrImage.Dispose();}}}//保存initImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);}else{//縮略圖寬、高計算double newWidth = initImage.Width;double newHeight = initImage.Height;//寬大于高或寬等于高(橫圖或正方)if (initImage.Width > initImage.Height || initImage.Width == initImage.Height){//如果寬大于模版if (initImage.Width > targetWidth){//寬按模版,高按比例縮放newWidth = targetWidth;newHeight = initImage.Height * (targetWidth / initImage.Width);}}//高大于寬(豎圖)else{//如果高大于模版if (initImage.Height > targetHeight){//高按模版,寬按比例縮放newHeight = targetHeight;newWidth = initImage.Width * (targetHeight / initImage.Height);}}//生成新圖//新建一個bmp圖片System.Drawing.Image newImage = new System.Drawing.Bitmap((int)newWidth, (int)newHeight);//新建一個畫板System.Drawing.Graphics newG = System.Drawing.Graphics.FromImage(newImage);//設置質量newG.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;newG.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//置背景色newG.Clear(Color.White);//畫圖newG.DrawImage(initImage, new System.Drawing.Rectangle(0, 0, newImage.Width, newImage.Height), new System.Drawing.Rectangle(0, 0, initImage.Width, initImage.Height), System.Drawing.GraphicsUnit.Pixel);//文字水印if (watermarkText != ""){using (System.Drawing.Graphics gWater = System.Drawing.Graphics.FromImage(newImage)){System.Drawing.Font fontWater = new Font("宋體", 10);System.Drawing.Brush brushWater = new SolidBrush(Color.White);gWater.DrawString(watermarkText, fontWater, brushWater, 10, 10);gWater.Dispose();}}//透明圖片水印if (watermarkImage != ""){if (File.Exists(watermarkImage)){//獲取水印圖片using (System.Drawing.Image wrImage = System.Drawing.Image.FromFile(watermarkImage)){//水印繪制條件:原始圖片寬高均大于或等于水印圖片if (newImage.Width >= wrImage.Width && newImage.Height >= wrImage.Height){Graphics gWater = Graphics.FromImage(newImage);//透明屬性ImageAttributes imgAttributes = new ImageAttributes();ColorMap colorMap = new ColorMap();colorMap.OldColor = Color.FromArgb(255, 0, 255, 0);colorMap.NewColor = Color.FromArgb(0, 0, 0, 0);ColorMap[] remapTable = { colorMap };imgAttributes.SetRemapTable(remapTable, ColorAdjustType.Bitmap);float[][] colorMatrixElements = {new float[] {1.0f, 0.0f, 0.0f, 0.0f, 0.0f},new float[] {0.0f, 1.0f, 0.0f, 0.0f, 0.0f},new float[] {0.0f, 0.0f, 1.0f, 0.0f, 0.0f},new float[] {0.0f, 0.0f, 0.0f, 0.5f, 0.0f},//透明度:0.5new float[] {0.0f, 0.0f, 0.0f, 0.0f, 1.0f}};ColorMatrix wmColorMatrix = new ColorMatrix(colorMatrixElements);imgAttributes.SetColorMatrix(wmColorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);gWater.DrawImage(wrImage, new Rectangle(newImage.Width - wrImage.Width, newImage.Height - wrImage.Height, wrImage.Width, wrImage.Height), 0, 0, wrImage.Width, wrImage.Height, GraphicsUnit.Pixel, imgAttributes);gWater.Dispose();}wrImage.Dispose();}}}//保存縮略圖newImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);//釋放資源newG.Dispose();newImage.Dispose();initImage.Dispose();}}#endregion#region 其它/// <summary>/// 判斷文件類型是否為WEB格式圖片/// (注:JPG,GIF,BMP,PNG)/// </summary>/// <param name="contentType">HttpPostedFile.ContentType</param>/// <returns></returns>public static bool IsWebImage(string contentType){if (contentType == "image/pjpeg" || contentType == "image/jpeg" || contentType == "image/gif" || contentType == "image/bmp" || contentType == "image/png"){return true;}else{return false;}}#endregion}//end class}