添加水印(文字and图片)
/// <summary>
/// 返回新的后缀
/// </summary>
/// <param name="fromFileStream">文件流</param>
/// <param name="fileSaveUrl">保存地址,后缀为gif,png,jpg,所有其它后缀会统一改成jpg</param>
/// <param name="templateWidth">最大宽度</param>
/// <param name="templateHeight">最大高度</param>
/// <param name="jpgQuality">压缩质量</param>
/// <returns></returns>
public static string MakeSmallImg(System.IO.Stream fromFileStream, string fileSaveUrl, System.Double templateWidth, System.Double templateHeight, int jpgQuality)
{
//从文件取得图片对象,并使用流中嵌入的颜色管理信息
System.Drawing.Image myImage = System.Drawing.Image.FromStream(fromFileStream, true);
//缩略图宽、高
System.Double newWidth = myImage.Width, newHeight = myImage.Height;
//宽大于模版的横图
if (myImage.Width >= myImage.Height)
{
if (myImage.Width > templateWidth)
{
//宽按模版,高按比例缩放
newWidth = templateWidth;
newHeight = myImage.Height * (newWidth / myImage.Width);
}
}
//高大于模版的竖图
else
{
if (myImage.Height > templateHeight)
{
//高按模版,宽按比例缩放
newHeight = templateHeight;
newWidth = myImage.Width * (newHeight / myImage.Height);
}
}
//取得图片大小
System.Drawing.Size mySize = new Size((int)newWidth, (int)newHeight);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(mySize.Width, mySize.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Transparent);
//在指定位置画图
g.DrawImage(myImage, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
new System.Drawing.Rectangle(0, 0, myImage.Width, myImage.Height),
System.Drawing.GraphicsUnit.Pixel);
///文字水印
//System.Drawing.Graphics G=System.Drawing.Graphics.FromImage(bitmap);
//System.Drawing.Font f=new Font("宋体",10);
//System.Drawing.Brush b=new SolidBrush(Color.Black);
//G.DrawString("myohmine",f,b,10,10);
//G.Dispose();
///图片水印
//System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
//Graphics a = Graphics.FromImage(bitmap);
//a.DrawImage(copyImage, new Rectangle(bitmap.Width-copyImage.Width,bitmap.Height-copyImage.Height,copyImage.Width, copyImage.Height),0,0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
//copyImage.Dispose();
//a.Dispose();
//copyImage.Dispose();
//保存缩略图
int i = fileSaveUrl.LastIndexOf('.');
string name = fileSaveUrl.Substring(0, i);
string exten = fileSaveUrl.Substring(i + 1).ToLower();
ImageFormat format = ImageFormat.Jpeg;
switch (exten)
{
case "png": format = ImageFormat.Png; break;
case "gif": format = ImageFormat.Gif; break;
default: exten = "jpg"; fileSaveUrl = name + ".jpg"; break;
}
if (File.Exists(fileSaveUrl)) { File.Delete(fileSaveUrl); }
if (format == ImageFormat.Jpeg)
{
EncoderParameters encoderParams = new EncoderParameters();
long[] quality = new long[1];
quality[0] = jpgQuality;
EncoderParameter encoderParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
encoderParams.Param[0] = encoderParam;
//获得包含有关内置图像编码解码器的信息的ImageCodecInfo 对象.
ImageCodecInfo[] arrayICI = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo jpegICI = null;
for (int x = 0;
x < arrayICI.Length;
x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICI = arrayICI[x];
//设置JPEG编码
break;
}
}
bitmap.Save(fileSaveUrl, jpegICI, encoderParams);
}
else
{
bitmap.Save(fileSaveUrl, format);
}
g.Dispose();
myImage.Dispose();
bitmap.Dispose();
return exten;
}
//处理图片上传
var fileCtl = FV.Row.FindControl("fuPicture") as FileUpload;
if (fileCtl.HasFile)
{
//上传图片
string path = (EditPersonalCode == "New" ? EditOrgCode : e.Keys["OrgCode"].ToString()).Replace('.', '/');
string fix = fileCtl.FileName.Substring(fileCtl.FileName.LastIndexOf('.') + 1).ToLower();
if (fix != "jpg" && fix != "png" && fix != "bmp" && fix != "gif")
{
e.Cancel = true;
ShowAlert("请重新选择照片上传\\n错误的图片格式:" + fix);
return;
}
string photoFilePath = Server.MapPath("~/OrgData/") + path;
if (!Directory.Exists(photoFilePath)) //如果不存在就建立
{
Directory.CreateDirectory(photoFilePath);
}
string fname = string.Format("s_{0}_{1}", e.Keys["PersonalCode"], DateTime.Now.TimeOfDay.TotalSeconds);
string newName = string.Format("{0}.{1}", fname, fix);//提示:必须用e.Keys["PersonalCode"]而不是EditPersonalCode
string fullpath = photoFilePath + "\\" + newName;
try
{
fix = Web.Base.ExtendClass.MakeSmallImg(fileCtl.FileContent, fullpath, 180, 240, 100);
}
catch
{
e.Cancel = true;
ShowAlert("无法识别的图片");
return;
}
newName = string.Format("{0}.{1}", fname, fix);//重新改变了后缀
e.NewValues.Add("PhotoFile", path + "/" + newName);
}
转载于:https://www.cnblogs.com/yuhanzhong/archive/2011/08/10/2133306.html
添加水印(文字and图片)相关推荐
- java 图片添加水印(文字水印+图片水印)
一.图片水印(水印文件覆盖到源文件上) /*** @param buffImg 源文件(BufferedImage)* @param waterImg 水印文件(BufferedImage)* @pa ...
- iOS 为图片 照片 添加水印 文字及图片
上午刚接到项目一个新的小需求,给上传的图片添加水印. 就希望小组长不断给我新的小需求,一年了自己成长的太慢了,这么好的公司,这么好的环境,这么好的条件,这么差的我. 在毕业的第一家公司的项目中就了解过 ...
- 图片添加水印文字方法 图片批量添加水印教程
为了防止图片被别人盗用,我们经常给图片添加自己的水印,使用Ps添加水印,但是需要要一张一张的添加,非常麻烦,所以给你大家介绍一个快速批量添加水印的方法. 使用工具:图片水印添加大师 第一步打开&quo ...
- Untiy添加水印并保存(包含文字转图片并打水印)
添加水印代码: /// <summary>/// 添加水印/// </summary>/// <param name="background"> ...
- 图片如何添加水印文字?如何设置照片水印?
现在人们对于版权越来越重视,把自己设计的图片展示在网络平台时,都会给图片加水印(https://www.yasuola.com/shuiyin),保证自己的图片不被别人侵犯.怎么给图片添加水印呢,小编 ...
- Java-PDF添加水印【文字或图片】,使用Spire.PDF for Java
Spire.PDF for Java 有免费版与收费版,单纯使用添加水印的功能的话,测试下来 免费版就够了,以下是相关代码与官网教程 1.官网:JAVA 添加 PDF 文本水印 (e-iceblue. ...
- 【记录】pdf添加水印(文字、图片水印)
先上效果图 由于透明度设置的比较低,可能看不太清右上角的是文字和图片的水印,图片打码了. 该实现中有word转pdf的方法,如有需要请移步另一个word转pdf的帖子,小白一个写的比较冗余哈. pom ...
- Java实现图片添加水印文字
项目中遇到要在图片上添加水印文字,类似于像生日贺卡那种推送,就是有一张底图,然后我们需要动态替换掉上面名字,性别,部门啥的给公司人员推送一个生日祝福,一开始使用富文本和一些html转图片的工具来做,发 ...
- java图片添加水印文字
jAVA图片中添加文字水印(铺满整个图片) package com.zhuozhengsoft.mark; import java.awt.AlphaComposite; import java.aw ...
- java 给 pdf文件添加水印 | Itext7 | 文字水印 | 图片水印 | 多重水印
java | Itext7 水印 | 文字水印 | 图片水印 本地开发环境:jdk1.8 效果图: maven依赖: <dependency><groupId>com.itex ...
最新文章
- php worker类,Workerman进阶之Worker类-id属性研究
- React-引领未来的用户界面开发框架-读书笔记(三)
- YBTOJ:矛盾指数(网络流-最大权闭合图)
- 天津工业大学c语言题库,天津工业大学it1创新2届c语言期末复习.ppt
- PVSCSI还是LSI logic?VM SCSI控制器驱动的选择
- 动态规划——小A点菜(洛谷 P1164)
- mongodb 远程连接
- MD5 + salt 的加密算法
- Android开启/关闭飞行模式命令
- bin文件无法生成,Error: Q0147E: Failed to create Directory ./Flora_GD32.bin\ER$$.ARM.__AT_0x000000C0: File
- 利用python selenium+cv2破解qq空间登录滑动验证码(无法获得完整图情况)(上)
- HTML字体及文本样式
- 计算机教师成绩分析总结与反思,成绩分析总结与反思
- java让字体闪动_java 字体闪烁
- 解决Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
- 从零开始搭建ROS小车(绪论)
- c++计算圆柱体表面积
- dropout层加在哪里_系列解读Dropout
- 【用JS自制表格软件玩数据】9. 自制三维 K线图 蜡烛图
- 计算机科学与技术专业适合什么人,计算机科学与技术专业怎么样 主要学什么内容...