zoukankan
html css js c++ java
图片相关操作(缩略图及水印)
/**/
///
<summary>
///
生成缩略图
///
</summary>
///
<param name="originalImagePath">
源图路径(物理路径)
</param>
///
<param name="thumbnailPath">
缩略图路径(物理路径)
</param>
///
<param name="width">
缩略图宽度
</param>
///
<param name="height">
缩略图高度
</param>
///
<param name="mode">
生成缩略图的方式
</param>
public
static
void
MakeThumbnail(
string
originalImagePath,
string
thumbnailPath,
int
width,
int
height,
string
mode)
{
System.Drawing.Image originalImage
=
System.Drawing.Image.FromFile(originalImagePath);
int
towidth
=
width;
int
toheight
=
height;
int
x
=
0
;
int
y
=
0
;
int
ow
=
originalImage.Width;
int
oh
=
originalImage.Height;
switch
(mode)
{
case
"
HW
"
:
//
指定高宽缩放(可能变形)
break
;
case
"
W
"
:
//
指定宽,高按比例
toheight
=
originalImage.Height
*
width
/
originalImage.Width;
break
;
case
"
H
"
:
//
指定高,宽按比例
towidth
=
originalImage.Width
*
height
/
originalImage.Height;
break
;
case
"
Cut
"
:
//
指定高宽裁减(不变形)
if
((
double
)originalImage.Width
/
(
double
)originalImage.Height
>
(
double
)towidth
/
(
double
)toheight)
{
oh
=
originalImage.Height;
ow
=
originalImage.Height
*
towidth
/
toheight;
y
=
0
;
x
=
(originalImage.Width
-
ow)
/
2
;
}
else
{
ow
=
originalImage.Width;
oh
=
originalImage.Width
*
height
/
towidth;
x
=
0
;
y
=
(originalImage.Height
-
oh)
/
2
;
}
break
;
default
:
break
;
}
//
新建一个bmp图片
System.Drawing.Image bitmap
=
new
System.Drawing.Bitmap(towidth, toheight);
//
新建一个画板
System.Drawing.Graphics g
=
System.Drawing.Graphics.FromImage(bitmap);
//
设置高质量插值法
g.InterpolationMode
=
System.Drawing.Drawing2D.InterpolationMode.High;
//
设置高质量,低速度呈现平滑程度
g.SmoothingMode
=
System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//
清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//
在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage,
new
System.Drawing.Rectangle(
0
,
0
, towidth, toheight),
new
System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
try
{
//
以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch
(System.Exception e)
{
throw
e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
/**/
///
<summary>
///
在图片上生成图片水印
///
</summary>
///
<param name="Path">
原服务器图片路径
</param>
///
<param name="Path_syp">
生成的带图片水印的图片路径
</param>
///
<param name="Path_sypf">
水印图片路径
</param>
protected
void
AddWaterPic(
string
Path,
string
Path_syp,
string
Path_sypf)
{
System.Drawing.Image image
=
System.Drawing.Image.FromFile(Path);
System.Drawing.Image copyImage
=
System.Drawing.Image.FromFile(Path_sypf);
System.Drawing.Graphics g
=
System.Drawing.Graphics.FromImage(image);
g.DrawImage(copyImage,
new
System.Drawing.Rectangle(image.Width
-
copyImage.Width, image.Height
-
copyImage.Height, copyImage.Width, copyImage.Height),
0
,
0
, copyImage.Width, copyImage.Height, System.Drawing.GraphicsUnit.Pixel);
g.Dispose();
image.Save(Path_syp);
image.Dispose();
}
查看全文
相关阅读:
Python 脚本退出
数组对象从大到小:
小程序中使用倒计时
倒计时
将数字转化为汉字
turn.js中文API 写一个翻页效果的参数详细解释
前端数据可视化echarts.js使用指南
视频及MP3 播放浅析 Jplayer参数详细
https://blog.csdn.net/cddcj/article/details/52193932
让一些旧浏览器变牛逼的库 ========兼容性
原文地址:https://www.cnblogs.com/infozero/p/1601179.html
最新文章
Java 数组
java.util.Date 与 java.sql.Date
Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入
Java线程池中的核心线程是如何被重复利用的?
多线程的三个特性
面向对象设计的六大原则
离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!
Java并发之AQS详解
Java中的锁分类
Java性能优化的50个细节
热门文章
史上更全的 MySQL 高性能优化实战总结!
线上服务内存OOM问题定位三板斧
ziplist之详细分析
SkipList 之详细分析
redis之闪电内幕
jdk11新特性
mysql json_extract函数获取json字段中某个key的值
mysql中的空值
MySQL 卡死的问题
getopt模块的学习
Copyright © 2011-2022 走看看