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
查看全文
相关阅读:
Webpack配置开发环境总结
vue2.0 引入font-awesome
vue-cli 脚手架项目简介(一)
CSS3伪类与伪元素的区别及注意事项
页面滚动到可视区域执行操作
56. 合并区间
<leetcode c++>卖股票系列
面试题 16.01. 交换数字
542. 01 矩阵
<leetcode c++> 445. 两数相加 II
原文地址:https://www.cnblogs.com/skyblue/p/867045.html
最新文章
Dynamic 子网格更新刷新主页面数据
Dynamic 仪表盘
Dynamic 分页查询
Dynamic 给页面字段绑定Click事件
Dynamic 视图配置按钮获取勾选数据
使用JFrame, JPanel, Graphics绘图案例
python绘图
虚拟机网络配置
Latex使用方法
Markdown使用方法
热门文章
MySQL数据库及可视化界面的安装
如何在博客园的博客中插入公式
泰坦尼克号生存者预测
文件读写
关于kaggle注册无法显示人机验证码的问题
7个步骤让PC网站自动适配手机网页
vscode: Visual Studio Code 常用快捷键
VUE 利用 webpack 给生产环境和发布环境配置不同的接口地址
ES6 Promise 用法讲解
js继承
Copyright © 2011-2022 走看看