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#图片切割、图片压缩、缩略图生成的更多相关文章
- 使用 Python 切割图片
刚好我有张 PNG 图片需要均匀切割,刚好我不会 PhotoShop,刚好我想用 Python 来练练手. 于是撸袖子码脚本. import os from PIL import Image def ...
- python3 验证码图片切割
切割前图片 切割后四个图片 代码 #coding:utf8 import os from PIL import Image,ImageDraw,ImageFile import numpy impor ...
- Python实现图片切割
import os from PIL import Image def splitimage(src, rownum, colnum, dstpath): img = Image.open(src) ...
- C#中图片切割,图片压缩,缩略图生成的代码
**//// <summary> /// 图片切割函数 /// </summary> /// <param name="sourceFile"> ...
- thinkphp图片上传+validate表单验证+图片木马检测+缩略图生成
目录 1.案例 1.1图片上传 1.2进行图片木马检测 1.3缩略图生成 1.4控制器中调用缩略图生成方法 1.案例 前言:在thinkphp框架的Thinkphp/Library/Thin ...
- golang图片裁剪和缩略图生成
直接贴代码了 package main import ( "errors" "fmt" "image" "image/gif&qu ...
- CPP 替代 PIL 图片处理(缩略图生成)
python中使用PIL(Pyhton Image Library)进行图片处理,好处就是编写简单方便,但是不能很好利用机器多核的特点,于是在项目中决定使用cpp来实现图片处理. 项目中的图片处理主要 ...
- C#对图片文件的压缩、裁剪操作初探
在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强 ...
- C#对图片文件的压缩、裁剪操作
在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强 ...
随机推荐
- 剑指offer--面试题21--相关
题目:设计包含min函数的栈,pop(),push(),min()的时间复杂度均为O(1) 自己所写代码如下:(写‘栈’的代码还是有些不熟练!) #include <iostream> u ...
- Leetcode#76 Minimum Window Substring
原题地址 用两个指针分别记录窗口的左右边界,移动指针时忽略那些出现在S种但是没有出现在T中的字符 1. 扩展窗口.向右移动右指针,当窗口内的字符即将多于T内的字符时,停止右移 2. 收缩窗口.向右调整 ...
- Codeforces Round #246 (Div. 2)——D题
KMP算法,没写出来,完全不理解NEXT数组.现在理解了很多 答案都在程序中 ,不过这个思想真的很神奇, 还有毛语不好,一直没看懂题目,现在懂了, 大概是:S中前缀等于后缀,求其长度,和其在S中出现了 ...
- poj 1185
上一题的升级版 dp[i][j][k] 表示第 i 行状态为 k 第i-1行状态为 j #include <cstdio> #include <cstdlib> #includ ...
- Java对象初始化详解
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
- 一张思维导图说明jQuery的AJAX请求机制
比文字描述清晰多了吧?而且越是复杂的逻辑,思维导图的作用就越大,同时对阅读源码也是一种快捷的方法. 看不清楚的话可以右键,在新标签页中打开图片,或者保存本地.
- logback日志配置文件代码示例
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true&q ...
- F.I.S本地环境的搭建教程
一.准备开发环境: 1.安装JRE 2.安装nodejs 最好是msi文件,比较省事. 3.(如果是PHP项目)安装php. 首先下载php(我的是5.5.15版本,win7 64位系统) zip,然 ...
- 分布式数据存储-MySQL主从复制
前言 一.主从复制过程 MySQL的主从复制能力是通过三个线程来实现的,两个在Slave端的I/O和SQL两个线程,还有一个在Master端I/O线程: Binlog dump thread:Mast ...
- POJ 1656
#include<iostream>//chengdacaizi 08 .11. 12 #include<string> using namespace std; ][]={} ...