zoukankan
html css js c++ java
用于图片切割,图片压缩,缩略图的生成(转到一个好东西)
用于图片切割,图片压缩,缩略图的生成
imageCut
#region
imageCut
/**/
///
<summary>
///
图片切割函数
///
</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
;
}
#endregion
ImageCodeInfo
查看全文
相关阅读:
KVM -> 热迁移_05
KVM -> 虚拟机磁盘管理_03
使用光盘搭建本地yum源
KVM -> 虚拟机管理&console登录_02
使用windows-SQLyog连接linux-mysql
linux下登陆mysql失败
忘记root密码时如何重设密码
批处理程序:自动登陆服务端,并循环执行某些命令
linux--磁盘分区
linux--档案与目录管理
原文地址:https://www.cnblogs.com/skyblue/p/867045.html
最新文章
算法——蛮力法之选择排序和冒泡排序c++实现
使用hexdump工具追踪EXT4文件系统中的一个文件
使用hexdump追踪FAT32文件系统中的一个文件
FAT文件系统学习和思考
曾经做过的40道程序设计课后习题总结(四)
二次排序
曾经做过的40道程序设计课后习题总结(一)
Java开发环境准备
给程序入门者的一点建议
Hadoop配置文件解析
热门文章
Hadoop工程包架构解析
总结5种比较高效常用的排序算法
Java如何获取系统cpu、内存、硬盘信息
Hadoop如何恢复被删除的文件
常用实用网站
jumpserver会话终端故障
一个shell的面试题
故障 -> nginx启动失败
saltstack 入门
centos6 -> zabbix2.2升级3.0.5教程
Copyright © 2011-2022 走看看