C#图片切割、图片压缩、缩略图生成
c# 图片 生成 压缩 切割 缩略图
2023-09-14 08:57:07 时间
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#编程,SQLServer提示将截断字符串或二进制数据
- c# 多线程并发-金三银四面试:C#.NET面试题高级篇2-多线程
- 【Android 逆向】ART 脱壳 ( dex2oat 脱壳 | /art/dex2oat/dex2oat.cc#Dex2oat 函数源码 )
- C#抓取网络图片保存到本地详解编程语言
- C#通过正则表达式抓取网页信息的类详解编程语言
- C与MySQL结合实现处理图片的功能(c# mysql 图片)
- c#.net生成图片验证码的代码
- C#给站点指定位置的某种格式的图片添加水印
- asp.net(c#)实现从sqlserver存取二进制图片的代码
- C#图片截取压缩(百分比压缩/大小压缩)实现代码
- C#字符串多行显示/文本换行以textbox为例讲解
- C#图片压缩的实现方法
- c#图片加密解密的实例代码
- c#给button添加不规则的图片以及用pictureBox替代button响应点击事件的方法
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- 浅谈C#中的可空值类型null
- C#图片按比例缩放的实现代码
- C#List<T>Contains<T>()的用法小结
- C#递归题目实例代码
- C#获取图片的后缀名解析
- C#判断两张图片是否一致的快速方法
- c#数据绑定之向查询中添加参数(.Net连接外部数据库)
- C#中的switchcase使用介绍
- C#滚动字幕的实现方法
- C#生成条形码图片的简单方法
- C#实现将网页保存成图片的网页拍照功能
- C#中面向对象编程机制之继承学习笔记
- c#实现图片二值化例子(黑白效果)
- c#中实现图片灰度化技术详解