C#图片切割、图片压缩、缩略图生成的实现代码
/// 图片切割函数
 /// </summary>
 /// <param name="sourceFile">原始图片文件</param>
 /// <param name="xNum">在X轴上的切割数量</param>
 /// <param name="yNum">在Y轴上的切割数量</param>
 /// <param name="quality">质量压缩比</param>
 /// <param name="outputFile">输出文件名,不带后缀</param>
 /// <returns>成功返回true,失败则返回false</returns>
 public static bool imageCut(String sourceFile, int xNum, int yNum, long quality, String outputFile)
 {
  try
  {
   long imageQuality      = quality;
   Bitmap sourceImage      = new Bitmap(sourceFile);
   ImageCodecInfo myImageCodecInfo   = GetEncoderInfo("image/jpeg");
   Encoder myEncoder      = Encoder.Quality;
   EncoderParameters myEncoderParameters = new EncoderParameters(1);
   EncoderParameter myEncoderParameter  = new EncoderParameter(myEncoder, imageQuality);
   myEncoderParameters.Param[0]    = myEncoderParameter;
   float xWidth        = sourceImage.Width / xNum;
   float yWidth        = sourceImage.Height / yNum;
   String outputImage      = "";
     
   for (int countY = 0; countY < yNum; countY++)
    for (int countX = 0; countX < xNum; countX++)
    {
  
     RectangleF cloneRect    = new RectangleF(countX * xWidth, countY * yWidth, xWidth, yWidth);
     Bitmap newImage     = sourceImage.Clone(cloneRect, PixelFormat.Format24bppRgb);
     outputImage      = outputFile + countX + countY + ".jpg";
     newImage.Save(outputImage, myImageCodecInfo, myEncoderParameters);
  
    }
   return true;
  }
  catch
  {
   return false;
  }
  
 }
 #endregion imageCut
  
 imageCompress
#region
imageCompress
 /**//// <summary>
 /// 图片压缩函数
 /// </summary>
 /// <param name="sourceFile">原始图片文件</param>
 /// <param name="quality">质量压缩比</param>
 /// <param name="ouputFile">输出文件名,请用 .jpg 后缀 </param>
 /// <returns>成功返回true,失败则返回false</returns>
 public static bool imageCompress(String sourceFile,long quality,String outputFile)
 {
  try
  {
   long imageQuality      = quality;
   Bitmap sourceImage      = new Bitmap(sourceFile);
   ImageCodecInfo myImageCodecInfo  = GetEncoderInfo("image/jpeg");
   Encoder myEncoder      = Encoder.Quality;
   EncoderParameters myEncoderParameters = new EncoderParameters(1);
   EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality);
   myEncoderParameters.Param[0]   = myEncoderParameter;
    
   sourceImage.Save(outputFile, myImageCodecInfo, myEncoderParameters);
   return true;
  
  }
  catch
  {
   return false;
  }
  
 }
 #endregion imageCompress
  
 getThumImage#region getThumImage
 /**//// <summary>
 /// 生成缩略图
 /// </summary>
 /// <param name="sourceFile">原始图片文件</param>
 /// <param name="quality">质量压缩比</param>
 /// <param name="multiple">收缩倍数</param>
 /// <param name="outputFile">输出文件名</param>
 /// <returns>成功返回true,失败则返回false</returns>
 public static bool getThumImage(String sourceFile, long quality, int multiple, String outputFile)
 {
  try
  {
   long imageQuality      = quality;
   Bitmap sourceImage      = new Bitmap(sourceFile);
   ImageCodecInfo myImageCodecInfo  = GetEncoderInfo("image/jpeg");
   Encoder myEncoder      = Encoder.Quality;
   EncoderParameters myEncoderParameters = new EncoderParameters(1);
   EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, imageQuality);
   myEncoderParameters.Param[0]   = myEncoderParameter;
   float xWidth       = sourceImage.Width;
   float yWidth       = sourceImage.Height;
   Bitmap newImage      = new Bitmap((int)(xWidth /multiple), (int)(yWidth /multiple));
   Graphics g        = Graphics.FromImage(newImage);
     
   g.DrawImage(sourceImage, 0, 0, xWidth / multiple, yWidth / multiple);
   g.Dispose();
   newImage.Save(outputFile,myImageCodecInfo,myEncoderParameters);
   return true;
  }
  catch
  {
   return false;
  }
 }
 #endregion getThumImage
  
 ImageCodecInfo#region ImageCodecInfo
 /**//// <summary>
 /// 获取图片编码信息
 /// </summary>
 private static ImageCodecInfo GetEncoderInfo(String mimeType)
 {
  int j;
  ImageCodecInfo[] encoders;
  encoders = ImageCodecInfo.GetImageEncoders();
  for (j = 0; j < encoders.Length; ++j)
  {
   if (encoders[j].MimeType == mimeType)
    return encoders[j];
  }
  return null;
 }

C#图片切割、图片压缩、缩略图生成的更多相关文章

  1. 使用 Python 切割图片

    刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手. 于是撸袖子码脚本. import os from PIL import Image def ...

  2. python3 验证码图片切割

    切割前图片 切割后四个图片 代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy impor ...

  3. Python实现图片切割

    import os from PIL import Image def splitimage(src, rownum, colnum, dstpath): img = Image.open(src) ...

  4. C#中图片切割,图片压缩,缩略图生成的代码

    **//// <summary> /// 图片切割函数 /// </summary> /// <param name="sourceFile"> ...

  5. thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成

    目录 1.案例 1.1图片上传  1.2进行图片木马检测   1.3缩略图生成   1.4控制器中调用缩略图生成方法 1.案例 前言:在thinkphp框架的Thinkphp/Library/Thin ...

  6. golang图片裁剪和缩略图生成

    直接贴代码了 package main import ( "errors" "fmt" "image" "image/gif&qu ...

  7. CPP 替代 PIL 图片处理(缩略图生成)

    python中使用PIL(Pyhton Image Library)进行图片处理,好处就是编写简单方便,但是不能很好利用机器多核的特点,于是在项目中决定使用cpp来实现图片处理. 项目中的图片处理主要 ...

  8. C#对图片文件的压缩、裁剪操作初探

    在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强 ...

  9. C#对图片文件的压缩、裁剪操作

    在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强 ...

随机推荐

  1. 【BZOJ】【3790】神奇项链

    Manacher算法/DP 找出所有的回文串,看做是一个个线段,那么问题就转化成了用最少的线段将整个区间覆盖起来,可以重叠,那么这就是一个DP了= = Orz ZKY大爷,让蒟蒻开眼界了……头一次知道 ...

  2. 【bzoj1010】[HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9281  Solved: 3719[Submit][St ...

  3. [工作积累] Android dynamic library & JNI_OnLoad

    Bionic libc doesn't load dependencies for current .so file (diff from Windows or Linux) so a explici ...

  4. tcp 多线程与多进程调用close

    http://blog.csdn.net/russell_tao/article/details/13092727 大家知道,所谓线程其实就是“轻量级”的进程.创建进程只能是一个进程(父进程)创建另一 ...

  5. JavaScript之数据类型讲解

    JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number和String.还有1种复杂数据类型——Object,Object本质上是由一 ...

  6. unset之讲解

    unset (PHP 4, PHP 5) unset — 释放给定的变量 说明¶ void unset ( mixed $var [, mixed $... ] ) unset() 销毁指定的变量. ...

  7. 用include来处理模板的问题

    /** * 测试方法 */ protected function getHtml() { $tpl = $this->pageletDir.$this->plTemplate; $html ...

  8. 将Asp.Net页面输出到EXCEL里去

    其实,利用ASP.NET输出指定内容的WORD.EXCEL.TXT.HTM等类型的文档很容易的.主要分为三步来完成. 一.定义文档类型.字符编码   Response.Clear(); Respons ...

  9. netaddr 0.7.12

    Pythonic manipulation of IPv4, IPv6, CIDR, EUI and MAC network addresses https://pypi.python.org/pyp ...

  10. jenkins配置及使用中出现的问题

    安装中遇到的问题: 1.linux中最好用普通用户安装tomcat和jenkins,用普通用户启动tomcat,否则jenkins工作空间不会在普通用户下,而线上自动发布部署时,是不允许用root用户 ...