//using MAX.Core.Helpers;
//using System;
//using System.Collections.Generic;
//using System.Drawing;
//using System.Drawing.Drawing2D;
//using System.Drawing.Imaging;
//using System.IO;
//namespace MAX.Framework.Helpers
//{
// public class ImageBuild
// {
// public byte[] Img;
// public int Width = 0, Height = 0;
// public Image InitImage = null;
// public string format = "";
// public int PicQuality = 0;//图片质量
// public bool CanUser
// {
// get { return format == ".jpg" || format == ".png"; }
// }
// public ImageBuild(byte[] image)
// {
// if (image == null || image.Length == 0)
// {
// return;
// }
// Img = image;
// try
// {
// if (image.Length > 3145728)
// {
// return;
// }
// MemoryStream ms = new MemoryStream(Img);
// InitImage = Image.FromStream(ms);
// ImageFormat f = GetImageFormat(InitImage, out format);
// ms.Close();
// ms.Dispose();
// }
// catch (Exception e)
// {
// throw;
// }
// if (InitImage == null)
// {
// return;
// }
// Width = InitImage.Width;
// Height = InitImage.Height;
// }
// ///
// /// 裁剪为指定大小,不符合则返回null
// ///
// ///
// ///
// ///
// public byte[] CutToSize(int width, int height)
// {
// if (InitImage == null)
// {
// return null;
// }
// int w = InitImage.Width;
// int h = InitImage.Height;
// if (w < width || h < height)
// {
// return null;
// }
// int x = 0, y = 0, nw = w, nh = h;
// int tx = 0, ty = 0, tw = width, th = height;
// double f = w * 1.0 / width;
// double t = h * 1.0 / height;
// if (f == t)//无需变化
// {
// }
// else if (f > t)//宽度较大
// {
// x = (int)((f - t) / 2 * width);
// nw = w - (x * 2);
// }
// else//高度较大
// {
// y = (int)((t - f) / 2 * height);
// nh = h - (y * 2);
// }
// Rectangle fromR = new Rectangle(x, y, nw, nh);
// Rectangle toR = new Rectangle(tx, ty, tw, th);
// Bitmap pickedImage = new Bitmap(width, height);
// Graphics pickedG = Graphics.FromImage(pickedImage);
// pickedG.InterpolationMode = InterpolationMode.Low;
// pickedG.SmoothingMode = SmoothingMode.HighSpeed;
// pickedG.DrawImage(InitImage, toR, fromR, GraphicsUnit.Pixel);
// //转图片后转二进制数组
// Image initImagex = (Image)pickedImage.Clone();
// MemoryStream ms = new MemoryStream();
// ImageCodecInfo icc = GetCodeInfo("1.jpg");
// long quality = 80;
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
// initImagex.Save(ms, icc, ep);
// byte[] bytes = ms.ToArray();
// return bytes;
// }
// ///
// /// 添加线条
// ///
// ///
// public void AddLineToImage(ref byte[] img)
// {
// MemoryStream ms = new MemoryStream(img);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// ms.Close();
// int width = image.Width;
// int height = image.Height;
// if (width < 100 || height < 100)
// {
// return;
// }
// int r = RandomHelper.GetRandomNumber(100, 256);
// int b = RandomHelper.GetRandomNumber(100, 256);
// int g = RandomHelper.GetRandomNumber(100, 256);
// int h = RandomHelper.GetRandomNumber(1, 10);
// Color c = Color.FromArgb(r, g, b);
// for (int i = 0; i < h; i++)
// {
// for (int j = 0; j < height; j++)
// {
// image.SetPixel(i, j, c);
// }
// for (int j = 0; j < width; j++)
// {
// image.SetPixel(j, i, c);
// }
// }
// for (int i = height - h; i < height; i++)
// {
// for (int j = 0; j < width; j++)
// {
// image.SetPixel(j, i, c);
// }
// }
// for (int i = width - h; i < width; i++)
// {
// for (int j = 0; j < height; j++)
// {
// image.SetPixel(i, j, c);
// }
// }
// ImageCodecInfo icc = GetCodeInfo("1.jpg");
// long quality = 75;
// ms = new MemoryStream();
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
// image.Save(ms, icc, ep);
// img = ms.ToArray();
// //FileBase.WriteBytes("1.jpg", bytes);
// }
// ///
// /// 在图片四周区域随机选取8*8像素,微调像素值
// ///
// ///
// public void FineTuningImageToRandomArea(ref byte[] img)
// {
// try
// {
// MemoryStream ms = new MemoryStream(img);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// int iW = image.Width;
// int iH = image.Height;
// if (iW <= 32 || iH <= 32)
// {
// return;
// }
// int x = 0;
// int y = 0;
// Random rand = new Random();
// int r = rand.Next(1, 4);
// switch (r)
// {
// case 1:
// x = rand.Next(0, (iW / 4) - 8);
// y = rand.Next(0, iH - 8);
// break;
// case 2:
// x = rand.Next((iW / 4) - 8, iW - 8);
// y = rand.Next(0, (iH / 4) - 8);
// break;
// case 3:
// x = rand.Next((iW / 4) - 8, iW - 8);
// y = rand.Next(3 * iH / 4, iH - 8);
// break;
// case 4:
// x = rand.Next(3 * iW / 4, iW - 8);
// y = rand.Next((iH / 4) - 8, 3 * iH / 4);
// break;
// }
// List> lstlstPixes = new List>();
// int tmpx = x;
// int tmpy = y;
// for (int jj = 0; jj < 4; jj++)
// {
// List lstPixes = new List
// {
// new PixPoint { X = tmpx, Y = tmpy }
// };
// for (int i = 1; i < 8 - (jj * 2); i++)
// {
// PixPoint ppx = new PixPoint { X = x, Y = ++tmpy };
// lstPixes.Add(ppx);
// PixPoint ppy = new PixPoint { X = ++tmpx, Y = y };
// lstPixes.Add(ppy);
// }
// lstlstPixes.Add(lstPixes);
// if (jj == 3)
// {
// break;
// }
// tmpx = ++x;
// tmpy = ++y;
// }
// for (int jj = 3; jj >= 0; jj--)
// {
// List lstPixes = new List();
// tmpx = ++x;
// tmpy = ++y;
// lstPixes.Add(new PixPoint { X = tmpx, Y = tmpy });
// for (int i = 1; i < 7 - (jj * 2); i++)
// {
// PixPoint ppx = new PixPoint { X = x, Y = --tmpy };
// lstPixes.Add(ppx);
// PixPoint ppy = new PixPoint { X = --tmpx, Y = y };
// lstPixes.Add(ppy);
// }
// lstlstPixes[jj].AddRange(lstPixes);
// }
// int inc = 0;
// foreach (List lstpix in lstlstPixes)
// {
// inc++;
// foreach (PixPoint pix in lstpix)
// {
// Color color = image.GetPixel(pix.X, pix.Y);
// int newR, newG, newB;
// newR = color.R + inc > 255 ? 255 : color.R + inc;
// newG = color.G + inc > 255 ? 255 : color.G + inc;
// newB = color.B + inc > 255 ? 255 : color.B + inc;
// Color c = Color.FromArgb(newR, newG, newB);
// image.SetPixel(pix.X, pix.Y, c);
// }
// }
// ImageCodecInfo icc = GetCodeInfo("1.jpg");
// //long quality = 75;
// long quality = PicQuality;//之前固定值 现在改为设置的数值
// ms = new MemoryStream();
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
// image.Save(ms, icc, ep);
// img = ms.ToArray();
// //TODO:Need Test
// //image.Dispose();
// ms.Close();
// }
// catch (Exception ex)
// {
// throw;
// }
// }
// ///
// /// 输出固定大小图片,背景白色填充,返回JPG格式二进制代码
// ///
// ///
// ///
// /// 最大尺寸KB
// ///
// public byte[] BuildNewSize(int width, int height, int maxSize, string codePath = "1.jpg")
// {
// if (InitImage == null)
// {
// return null;
// }
// int w = InitImage.Width;
// int h = InitImage.Height;
// int x = 0, y = 0, nw = w, nh = h;
// int tx = 0, ty = 0, tw = width, th = height;
// //先缩放
// if (w <= width && h <= height)//无需缩放
// {
// tx = (width - w) / 2;
// tw = w;
// ty = (height - h) / 2;
// th = h;
// }
// else if (w < width && h > height)
// {
// tx = (width - w) / 2;
// tw = w;
// y = (h - height) / 2;
// nh = height;
// }
// else if (w > width && h < height)
// {
// ty = (height - h) / 2;
// th = h;
// x = (w - width) / 2;
// nw = width;
// }
// else
// {
// double f = w * 1.0 / width;
// double t = h * 1.0 / height;
// if (f == t)//无需变化
// {
// }
// else if (f > t)//宽度较大
// {
// x = (int)((f - t) / 2 * width);
// nw = w - (x * 2);
// }
// else//高度较大
// {
// y = (int)((t - f) / 2 * height);
// nh = h - (y * 2);
// }
// }
// Rectangle fromR = new Rectangle(x, y, nw, nh);
// Rectangle toR = new Rectangle(tx, ty, tw, th);
// Bitmap pickedImage = new Bitmap(width, height);
// for (int i = 0; i < pickedImage.Width; i++)
// {
// for (int j = 0; j < pickedImage.Height; j++)
// {
// Color color = Color.FromArgb(255, 255, 255);
// pickedImage.SetPixel(i, j, color);
// }
// }
// Graphics pickedG = Graphics.FromImage(pickedImage);
// pickedG.InterpolationMode = InterpolationMode.Low;
// pickedG.SmoothingMode = SmoothingMode.HighSpeed;
// pickedG.DrawImage(InitImage, toR, fromR, GraphicsUnit.Pixel);
// //转图片后转二进制数组
// Image initImagex = (Image)pickedImage.Clone();
// MemoryStream ms = new MemoryStream();
// ImageCodecInfo icc = GetCodeInfo(codePath);
// //long quality = maxSize == 1024 ? 75l : 85;
// long quality = PicQuality;//之前固定值 现在改为设置的数值
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
// initImagex.Save(ms, icc, ep);
// byte[] bytes = ms.ToArray();
// if (bytes.Length > maxSize * 1024)
// {
// ms = new MemoryStream();
// ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 75L);
// initImagex.Save(ms, icc, ep);
// bytes = ms.ToArray();
// }
// if (bytes.Length > maxSize * 1024)
// {
// ms = new MemoryStream();
// ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 55L);
// initImagex.Save(ms, icc, ep);
// bytes = ms.ToArray();
// }
// //TODO:Need Test
// //pickedImage.Dispose();
// //pickedG.Dispose();
// //initImagex.Dispose();
// //ms.Close();
// if (bytes.Length > maxSize * 1024)
// {
// return null;
// }
// //ImageCodecInfo icc = GetCodeInfo("1.jpg");
// //initImagex.Save("22.jpg", icc, ep);
// return bytes;
// }
// ///
// /// 根据路劲得出图片编码信息
// ///
// ///
// ///
// public ImageCodecInfo GetCodeInfo(string path)
// {
// string exe = path.Split('.')[path.Split('.').Length - 1].ToLower();
// ImageCodecInfo[] icis = ImageCodecInfo.GetImageEncoders();
// ImageCodecInfo ici = null, defCodecInfo = null;
// foreach (ImageCodecInfo i in icis)
// {
// if (i.MimeType == "image/jpeg")
// {
// defCodecInfo = i;
// }
// if ((exe == "jpg" || exe == "jpeg") && i.MimeType == "image/jpeg")
// {
// ici = i;
// }
// if (exe == "bmp" && i.MimeType == "image/bmp")
// {
// ici = i;
// }
// if (exe == "png" && i.MimeType == "image/png")
// {
// ici = i;
// }
// if (exe == "gif" && i.MimeType == "image/gif")
// {
// ici = i;
// }
// }
// if (ici == null)
// {
// ici = defCodecInfo;
// }
// return ici;
// }
// ///
// /// 获取Image图片格式
// ///
// ///
// ///
// ///
// private ImageFormat GetImageFormat(Image _img, out string format)
// {
// if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
// {
// format = ".jpg";
// return System.Drawing.Imaging.ImageFormat.Jpeg;
// }
// if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
// {
// format = ".gif";
// return System.Drawing.Imaging.ImageFormat.Gif;
// }
// if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
// {
// format = ".png";
// return System.Drawing.Imaging.ImageFormat.Png;
// }
// if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
// {
// format = ".bmp";
// return System.Drawing.Imaging.ImageFormat.Bmp;
// }
// format = string.Empty;
// return null;
// }
// #region 随机裁四边--10个像素以内
// public void CutPicture(ref byte[] file)
// {
// MemoryStream ms = new MemoryStream(file);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// Random radom = new Random();
// int cutPixl = radom.Next(1, 5); //左边切除的像素
// int cutPixr = radom.Next(1, 5); //右边切除的像素
// int cutPixt = radom.Next(1, 5); //顶部切除的像素
// int cutPixb = radom.Next(1, 5); //底部切除的像素
// Image img = BytesToImage(file);
// int iniWidth = img.Width;
// int iniHeight = img.Height;
// try
// {
// Bitmap bitmap = StartCutImage(file, cutPixl, cutPixr, iniWidth - cutPixl - cutPixt, iniHeight - cutPixr - cutPixb, iniWidth, iniHeight);
// image = bitmap;
// ImageCodecInfo icc = GetCodeInfo("1.jpg");
// //long quality = 75;
// long quality = PicQuality;//之前固定值 现在改为设置的数值
// ms = new MemoryStream();
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
// image.Save(ms, icc, ep);
// // image.Save(ms,ImageFormat.Jpeg);
// file = ms.ToArray();
// //TODO:Need Test
// //img.Dispose();
// //bitmap.Dispose();
// //image.Dispose();
// ms.Close();
// }
// catch (Exception)
// {
// }
// }
// ///
// /// 剪裁
// ///
// /// 原始Bitmap
// /// 开始坐标X
// /// 开始坐标Y
// /// 宽度
// /// 高度
// /// 剪裁后的Bitmap
// public static Bitmap StartCutImage(byte[] bytes, int StartX, int StartY, int iWidth, int iHeight, int iniWidth, int iniHeight)
// {
// Image image = BytesToImage(bytes);
// Bitmap b = new Bitmap(image);
// if (bytes == null)
// {
// return null;
// }
// try
// {
// Bitmap bmpOut = new Bitmap(iWidth, iHeight, PixelFormat.Format24bppRgb);//裁剪成小一号的图片
// //Bitmap bmpOut = new Bitmap(w, h, PixelFormat.Format24bppRgb);//保持原大小,裁剪部分用指定的颜色填充
// Graphics graphics = Graphics.FromImage(bmpOut);
// //graphics.Clear(Color.White);//裁剪部分用指定的颜色填充
// graphics.DrawImage(b, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(StartX, StartY, iWidth, iHeight), GraphicsUnit.Pixel);
// graphics.Dispose();
// bmpOut = new Bitmap(bmpOut, iniWidth, iniHeight);//图片保存原始的大小尺寸
// return bmpOut;
// }
// catch
// {
// return null;
// }
// }
// ///
// /// 字节数组转换为图片
// ///
// /// 字节数组
// /// 图片
// public static Image BytesToImage(byte[] buffer)
// {
// MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length);
// Image img = Image.FromStream(ms);
// ms.Dispose();
// return img;
// }
// ///
// /// 图片对象转字节数组
// ///
// /// 图片路径
// /// 图片字节数组
// private byte[] ImageToBytes(string imagePath)
// {
// FileStream fs = new FileStream(imagePath, FileMode.Open);
// byte[] imgBytes = new byte[fs.Length];
// fs.Read(imgBytes, 0, imgBytes.Length);
// fs.Close();
// return imgBytes;
// //var bf = new BinaryFormatter();
// //bf.Serialize(ms,imagePath);
// //ms.Close();
// //return ms.ToArray();
// }
// #endregion
// #region 添加文字水印
// public void AddWaterMark(ref byte[] file, string shopName = "")
// {
// MemoryStream ms = new MemoryStream(file);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// try
// {
// Bitmap bitmap = StartAddWaterMark(file, shopName);
// image = bitmap;
// ImageCodecInfo icc = GetCodeInfo("1.jpg");
// //long quality = 75;
// long quality = PicQuality;//之前固定值 现在改为设置的数值
// ms = new MemoryStream();
// EncoderParameters ep = new EncoderParameters(1);
// ep.Param[0] = new EncoderParameter(Encoder.Quality, quality);
// image.Save(ms, icc, ep);
// file = ms.ToArray();
// //image.Dispose();
// //bitmap.Dispose();
// ms.Close();
// }
// catch (Exception)
// {
// throw;
// }
// }
// ///
// /// 检测是否是白底图
// ///
// /// 图片byte数组
// /// true-白底图 false-非白底图
// public static bool CheckImageIsWhiteBackground(byte[] bytesImg)
// {
// MemoryStream ms = new MemoryStream(bytesImg);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// int iWhitePixNum = 0;
// int iTotalPix = 0;
// try
// {
// int iWidth = image.Width;
// int iHeight = image.Height;
// int iInpectWidth = 20;
// //统计三窄边白色像素数量
// for (int i = 0; i < iInpectWidth; i++)
// {
// for (int j = 0; j < iHeight; j++)
// {
// Color cl = image.GetPixel(i, j);
// iTotalPix++;
// if (cl.Name.Equals("ffffffff"))
// {
// iWhitePixNum++;
// }
// }
// }
// for (int i = iWidth - iInpectWidth; i < iWidth; i++)
// {
// for (int j = iInpectWidth; j < iHeight; j++)
// {
// Color cl = image.GetPixel(i, j);
// iTotalPix++;
// if (cl.Name.Equals("ffffffff"))
// {
// iWhitePixNum++;
// }
// }
// }
// for (int i = iInpectWidth; i < iWidth; i++)
// {
// for (int j = 0; j < iInpectWidth; j++)
// {
// Color cl = image.GetPixel(i, j);
// iTotalPix++;
// if (cl.Name.Equals("ffffffff"))
// {
// iWhitePixNum++;
// }
// }
// }
// }
// catch (Exception ex)
// {
// throw;
// }
// finally
// {
// ms.Close();
// image.Dispose();
// }
// //如果三窄边的白色像素数量占比高于85%,则判定为白底图
// return Decimal.Divide(iWhitePixNum, iTotalPix) > (decimal)0.85;
// }
// ///
// /// 添加图片水印
// ///
// ///
// ///
// /// 水印开始X坐标(自动扣除图片宽度)
// /// 水印开始Y坐标(自动扣除图片高度
// /// 透明度 0-1
// /// 文件后缀名
// ///
// public void AddLogoWaterMark(ref byte[] file, Image watermark, float opacity, string externName, bool bFill = true)
// {
// MemoryStream ms = new MemoryStream(file);
// Bitmap image = (Bitmap)Image.FromStream(ms);
// Bitmap bitmap = new Bitmap(image, image.Width, image.Height); //改为固定
// Graphics g = Graphics.FromImage(bitmap);
// //下面定义一个矩形区域
// float rectWidth = watermark.Width + 10;
// float rectHeight = watermark.Height + 10;
// //声明矩形域
// RectangleF textArea;
// if (bFill)
// {
// textArea = new RectangleF(0, 0, image.Width, image.Height);
// }
// else
// {
// int height = watermark.Height;
// int width = watermark.Width;
// height = 80;
// width = 80;
// textArea = new RectangleF(0, 0, width, height);
// }
// Bitmap w_bitmap = ChangeOpacity(watermark, opacity);
// g.DrawImage(w_bitmap, 0, 0, 80, 80);
// ms = new MemoryStream();
// //保存图片
// switch (externName)
// {
// case ".jpg":
// bitmap.Save(ms, ImageFormat.Jpeg);
// break;
// case ".gif":
// bitmap.Save(ms, ImageFormat.Gif);
// break;
// case ".png":
// bitmap.Save(ms, ImageFormat.Png);
// break;
// default:
// bitmap.Save(ms, ImageFormat.Jpeg);
// break;
// }
// file = ms.ToArray();
// ms.Close();
// g.Dispose();
// bitmap.Dispose();
// }
// ///
// /// 改变图片的透明度
// ///
// /// 图片
// /// 透明度
// ///
// public Bitmap ChangeOpacity(Image img, float opacityvalue)
// {
// float[][] nArray ={ new float[] {1, 0, 0, 0, 0},
// new float[] {0, 1, 0, 0, 0},
// new float[] {0, 0, 1, 0, 0},
// new float[] {0, 0, 0, opacityvalue, 0},
// new float[] {0, 0, 0, 0, 1}};
// ColorMatrix matrix = new ColorMatrix(nArray);
// ImageAttributes attributes = new ImageAttributes();
// attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
// Image srcImage = img;
// Bitmap resultImage = new Bitmap(srcImage.Width, srcImage.Height);
// Graphics g = Graphics.FromImage(resultImage);
// g.DrawImage(srcImage, new Rectangle(0, 0, srcImage.Width, srcImage.Height), 0, 0, srcImage.Width, srcImage.Height, GraphicsUnit.Pixel, attributes);
// //g.DrawImage(srcImage, 0, 0, srcImage.Width, srcImage.Height) ;
// //g.DrawImage(srcImage, 0, 0, 80,80);
// g.Dispose();
// attributes.Dispose();
// return resultImage;
// }
// //private static Font crFont = new Font("微软雅黑", 30, FontStyle.Bold);
// ///
// ///
// ///
// ///
// /// 水印文字
// ///
// public static Bitmap StartAddWaterMark(byte[] bytes, string text = "")
// {
// if (bytes == null)
// {
// return null;
// }
// Image image = BytesToImage(bytes);
// Bitmap bitmap = new Bitmap(image);
// try
// {
// int width = bitmap.Width, height = bitmap.Height;
// Graphics g = Graphics.FromImage(bitmap);
// g.DrawImage(bitmap, 0, 0);
// g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
// g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
// g.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel);
// Font crFont = new Font("微软雅黑", 30, FontStyle.Bold);
// SizeF crSize = new SizeF();
// crSize = g.MeasureString(text, crFont);
// //背景位置(去掉了. 如果想用可以自己调一调 位置.)
// //g.FillRectangle(new SolidBrush(Color.FromArgb(200, 255, 255, 255)), (width - crSize.Width) / 2, (height - crSize.Height) / 2, crSize.Width, crSize.Height);
// SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(120, 177, 171, 171));//177, 171, 171
// //文字水印随机加在一遍
// Random rdom = new Random();
// int rdLocation = rdom.Next(1, 5);//1:左边 2:右边 3:上边 4:下边
// if (rdLocation == 1)
// {
// #region 左边
// //将原点移动 到图片中点
// g.TranslateTransform(0, (height / 2) + crSize.Height);
// //以原点为中心 转 -45度
// g.RotateTransform(-90);
// g.DrawString(text, crFont, semiTransBrush, new PointF(0, 0));//文字所加的位置
// #endregion
// }
// else if (rdLocation == 2)
// {
// #region 右边
// //将原点移动 到图片中点
// g.TranslateTransform(width - (crSize.Width / 2), (height / 2) + crSize.Height);
// //以原点为中心 转 -45度
// g.RotateTransform(-90);
// g.DrawString(text, crFont, semiTransBrush, new PointF(0, 0));//文字所加的位置
// #endregion
// }
// else if (rdLocation == 3)
// {
// #region 上边
// ////将原点移动 到图片中点
// //g.TranslateTransform(width / 2 - crSize.Width, 0);
// ////以原点为中心 转 -45度
// //g.RotateTransform(-0);
// g.DrawString(text, crFont, semiTransBrush, new PointF((width / 2) - (crSize.Width / 2), 0));//文字所加的位置
// #endregion
// }
// else if (rdLocation == 4)
// {
// #region 下边
// ////将原点移动 到图片中点
// //g.TranslateTransform(width / 2 - crSize.Width, height - crSize.Height * 3);
// ////以原点为中心 转 -0度
// ////g.RotateTransform(-0);
// g.DrawString(text, crFont, semiTransBrush, new PointF((width / 2) - (crSize.Width / 2), height - crSize.Height));//文字所加的位置
// #endregion
// }
// else
// {
// #region 上边
// g.DrawString(text, crFont, semiTransBrush, new PointF((width / 2) - (crSize.Width / 2), 0));//文字所加的位置
// #endregion
// }
// //crFont.Dispose();
// g.Dispose();
// //image.Dispose();
// //semiTransBrush.Dispose();
// ////将原点移动 到图片中点
// //g.TranslateTransform(width / 2, height / 2);
// ////以原点为中心 转 -45度
// //g.RotateTransform(-45);
// //g.DrawString(text, crFont, semiTransBrush, new PointF(width / 2 - crSize.Width / 2, 0));//文字所加的位置
// }
// catch (Exception e)
// {
// throw;
// }
// return bitmap;
// }
// #endregion
// ///
// /// 获取两张图片的相似度
// ///
// /// 图片1
// /// 图片2
// ///
// public static string GetSimilarityForTwoImgs(Image image1, Image image2)
// {
// string sImg1Hash = GetHash(image1);
// string sImg2Hash = GetHash(image2);
// return (Math.Round(((64.0 * 64.0) - CalcSimularDegree(sImg1Hash, sImg2Hash)) / (64.0 * 64.0), 4) * 100) + "%";
// }
// private static int CalcSimularDegree(string a, string b)
// {
// if (a.Length != b.Length)
// {
// throw new ArgumentException();
// }
// int count = 0;
// for (int i = 0; i < a.Length; i++)
// {
// if (a[i] != b[i])
// {
// count++;
// }
// }
// return count;
// }
// private static string GetHash(Image sourceImage)
// {
// Image image = ReduceSize(sourceImage);
// byte[] grayValues = ReduceColor(image);
// byte average = CalcAverage(grayValues);
// string sRes = ComputeBits(grayValues, average);
// image.Dispose();
// image = null;
// return sRes;
// }
// private static string ComputeBits(byte[] grayValues, byte average)
// {
// char[] result = new char[grayValues.Length];
// for (int i = 0; i < grayValues.Length; i++)
// {
// if (grayValues[i] < average)
// {
// result[i] = '0';
// }
// else
// {
// result[i] = '1';
// }
// }
// return new string(result);
// }
// private static byte CalcAverage(byte[] grayValues)
// {
// int sum = 0;
// for (int i = 0; i < grayValues.Length; i++)
// {
// sum += grayValues[i];
// }
// return System.Convert.ToByte(sum / grayValues.Length);
// }
// private static byte[] ReduceColor(Image image)
// {
// Bitmap bitmap = new Bitmap(image);
// byte[] grayValues = new byte[image.Width * image.Height];
// for (int i = 0; i < image.Width; i++)
// {
// for (int j = 0; j < image.Height; j++)
// {
// Color color = bitmap.GetPixel(i, j);
// byte grayValue = (byte)(((color.R * 30) + (color.G * 59) + (color.B * 11)) / 100);
// grayValues[(i * image.Width) + j] = grayValue;
// }
// }
// bitmap.Dispose();
// return grayValues;
// }
// private static Image ReduceSize(Image image)
// {
// Image image1 = image.GetThumbnailImage(64, 64, () =>
// {
// return false;
// }, IntPtr.Zero);
// return image1;
// }
// //byte[] 转换 Bitmap
// public static Bitmap BytesToBitmap(byte[] Bytes)
// {
// MemoryStream stream = null;
// try
// {
// stream = new MemoryStream(Bytes);
// return new Bitmap(new Bitmap(stream));
// }
// catch (ArgumentNullException ex)
// {
// throw ex;
// }
// catch (ArgumentException ex)
// {
// throw ex;
// }
// finally
// {
// stream.Close();
// }
// }
// //Bitmap转byte[]
// public static byte[] BitmapToBytes(Bitmap Bitmap)
// {
// MemoryStream ms = null;
// try
// {
// ms = new MemoryStream();
// Bitmap.Save(ms, Bitmap.RawFormat);
// byte[] byteImage = new Byte[ms.Length];
// byteImage = ms.ToArray();
// return byteImage;
// }
// catch (ArgumentNullException ex)
// {
// throw ex;
// }
// finally
// {
// ms.Close();
// }
// }
// public static Image ResizeImage(Image imgToResize, Size size)
// {
// //获取图片宽度
// int sourceWidth = imgToResize.Width;
// //获取图片高度
// int sourceHeight = imgToResize.Height;
// float nPercent = 0;
// float nPercentW = 0;
// float nPercentH = 0;
// //计算宽度的缩放比例
// nPercentW = size.Width / (float)sourceWidth;
// //计算高度的缩放比例
// nPercentH = size.Height / (float)sourceHeight;
// if (nPercentH < nPercentW)
// {
// nPercent = nPercentH;
// }
// else
// {
// nPercent = nPercentW;
// }
// //期望的宽度
// int destWidth = (int)(sourceWidth * nPercent);
// //期望的高度
// int destHeight = (int)(sourceHeight * nPercent);
// Bitmap b = new Bitmap(destWidth, destHeight);
// Graphics g = Graphics.FromImage(b);
// g.InterpolationMode = InterpolationMode.HighQualityBicubic;
// //绘制图像
// g.DrawImage(imgToResize, 0, 0, destWidth, destHeight);
// g.Dispose();
// return b;
// }
// private class PixPoint
// {
// public int X { get; set; }
// public int Y { get; set; }
// }
// }
//}