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
查看全文
相关阅读:
.net测试篇之Moq行为配置
.net测试篇之Moq框架简单使用
.net测试篇之测试神器Autofixture在几个复杂场景下的使用示例以及与Moq结合
.net测试篇之测试神器Autofixture Generator使用与自定义builder
.net测试篇之测试神器Autofixture基本配置一
.net测试篇之单元测试/集成测试神器Autofixture
.netcore持续集成测试篇之web项目验收测试
.netcore持续集成测试篇之 .net core 2.1项目集成测试
.netcore持续集成测试篇之MVC层单元测试
.netcore持续集成测试篇之测试方法改造
原文地址:https://www.cnblogs.com/skyblue/p/867045.html
最新文章
《玩态人生》重新学会玩
关于专才与通才的思辨
人工智能算法综述(二) RNN and LSTM
人工智能算法综述 (一)
我理解的用户体验
人工智能(AI)库TensorFlow 踩坑日记之二
人工智能(AI)库TensorFlow 踩坑日记之一
论游戏的可玩性
人工智能起步-反向回馈神经网路算法(BP算法)
[超简洁]EasyQ框架-应对WEB高并发业务(秒杀、抽奖)等业务
热门文章
owin 中间件 katana 如何解密cookie
vue项目的常用配置代码
css的div垂直居中的方法,百分比div垂直居中
ie浏览器部分图片不显示
超详细的文本溢出添加省略号。。。。
vue中使用swiper-slide时,循环轮播失效?
向李玉宝学习
2019请善待每一个向前奔跑的人
大家都知道fastclick能解决300ms延迟,现在我们来看一下,使用方法
移动端click事件300ms延迟
Copyright © 2011-2022 走看看