C#图片切割、图片压缩、缩略图生成

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;

 }

时间: 2024-08-10 19:10:23

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

使用 Python 切割图片

刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手. 于是撸袖子码脚本. import os from PIL import Image def splitimage(src, rownum, colnum, dstpath): img = Image.open(src) w, h = img.size if rownum <= h and colnum <= w: print('Original image info: %sx%s, %s

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

**//// <summary> /// 图片切割函数 /// </summary> /// <param name="sourceFile">原始图片文件</param> /// <param name="xNum">在X轴上的切割数量</param> /// <param name="yNum">在Y轴上的切割数量</param> /// <

Asp.Net 高清图片缩略图生成

生成缩略图核心代码: /// <summary> /// 图片上传 生成缩略图 /// </summary> /// <param name="files">文件上传控件</param> /// <param name="path">文件夹名称</param> /// <param name="fname">文件名称</param> /// <p

Android 获取SDCard上图片和视频的缩略图

获取图片缩略图和视频缩略图的方法: Java代码: import java.io.File; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.ThumbnailUtils; import android.os.Bundle; import android.os.Environment; import an

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

在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强人意. 于是采用C#为我们提供的图像编辑功能,实现一站式上传,通过程序生成所需大小.尺寸的目标图片. 进入正题--> 先说图片压缩 第一步:需要读取一个图片文件,读取方法: // <param name="ImageFilePathAndName">图片文件的全路径名称&

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

在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强人意. 于是采用C#为我们提供的图像编辑功能,实现一站式上传,通过程序生成所需大小.尺寸的目标图片. 进入正题--> 先说图片压缩 第一步:需要读取一个图片文件,读取方法: // <param name="ImageFilePathAndName">图片文件的全路径名称&

Android 中通过切割图片创建人物行走动画

以前一直使用序列图片来实现动画效果,造成空间的极大浪费,所以想要尝试下切割图片来实现动画. 如图所示,是由66rpg纸娃娃系统生成的角色行走图.本程序必须实现将人物的整体图片切割后存入4x4的数组来动态加载. 在主布局文件中设立4个ImageView,分别用来显示角色在不同角度下的行走动作.然后在主活动文件中: public class MainActivity extends ActionBarActivity {private ImageView myImageView,myImageVie

在读取图片的时候压缩减小内存开支

这个问题真是把我折腾的够呛: package com.example.tupian; import java.io.IOException; import java.io.InputStream; import java.net.URL; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.annotation.SuppressLint; import and

Android调用相册拍照控件实现系统控件缩放切割图片

android 下如果做处理图片的软件 可以调用系统的控件 实现缩放切割图片 非常好的效果 今天写了一个demo分享给大家 package cn.m15.test; import java.io.ByteArrayOutputStream;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.net.Ur