java 在模版图片上加文字 c#自动生成缩略图、自动生成带文字和图片的水印图
java 在模版图片上加文字 c#自动生成缩略图、自动生成带文字和图片的水印图 php生成小图加文字
java 在模版 图片 上加文字
http://okone96.itpub.net/post/9033/228826
签名的可以写一个java类,用一个透明的底图再把文字写在图片上面(可以设置字体的样式的)
Java的图片处理
-----------------------------------------------------------
给你加上图片合并的功能
--------------------------------------------------------------------
http://blog.csdn.net/ycyangcai/archive/2007/07/28/1713623.aspx
这个是用c#写的,功能更好些.
FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图的方法
本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图。
实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型
的文件,这个的判断可以在程序中修改,本程序只是判断了“image/bmp”、“image/gif”、
“image/pjpeg”三种类型。
java 在模版图片上加文字 c#自动生成缩略图、自动生成带文字和图片的水印图 php生成小图加文字
java 在模版 图片 上加文字
http://okone96.itpub.net/post/9033/228826
签名的可以写一个java类,用一个透明的底图再把文字写在图片上面(可以设置字体的样式的)
Java的图片处理
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
public class ImageDraw {
public static void main(String[] args) {
try {
// 读取模板图片内容
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(new FileInputStream("c:\1.JPG"));
BufferedImage image = decoder.decodeAsBufferedImage();
Graphics g = image.getGraphics();
//BufferedImage image = ImageIO.read(new FileInputStream("c:\1.JPG"));
//Graphics2D g = image.createGraphics();// 得到图形上下文
g.setColor(Color.BLACK); // 设置画笔颜色
// 设置字体
Font font=new Font("大标宋", Font.LAYOUT_LEFT_TO_RIGHT, 14);
g.setFont(font);
g.drawString("016478", 270,282);// 写入签名
g.dispose();
FileOutputStream out = new FileOutputStream("c:\test1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
}
}
}
-----------------------------------------------------------
给你加上图片合并的功能
BufferedImage bi1 = null;
int x = 10;
int y = 10;
BufferedImage bi2 = null;
try {
bi1 = javax.imageio.ImageIO.read(new File("c:\1.jpg"));
bi2 = javax.imageio.ImageIO.read(new File("c:\1.gif"));
} catch (IOException e) {
e.printStackTrace();
}
Graphics g = bi1.getGraphics();
g.drawImage(bi2, x, y, null);
FileOutputStream out=null; //输出到文件流
try {
out = new FileOutputStream("c:\1.jpg");
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(bi1);
out.close();
} catch (IOException e) {
e.printStackTrace();
} //p1背景图,p2印章,p为输出图。p2要是gif或png等支持透明图象的。
//x,y 为在背景图放置印章的坐标( 左上角开始算)。
//在Java2D中设置画图的透明度:
float alpha = 0.5f; // 透明度
//BufferedImage bufferedImage = null;
Graphics2D g2d = bi2.createGraphics();
// 设置透明
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 开始
// g2d.drawImage(); // 画图
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); // 结束
--------------------------------------------------------------------
http://blog.csdn.net/ycyangcai/archive/2007/07/28/1713623.aspx
这个是用c#写的,功能更好些.
FileUpload控件上传图片并自动生成缩略图、自动生成带文字和图片的水印图的方法
本文借助vs2005中自带的FileUpload控件实现图片文件的上传并生成缩略图。
实现过程:选择图片上传成功后,取得已经存在服务器的文件生成缩略图,并且判断是否是图片类型
的文件,这个的判断可以在程序中修改,本程序只是判断了“image/bmp”、“image/gif”、
“image/pjpeg”三种类型。
/**/
/// <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_sy">生成的带文字水印的图片路径</param>
protected void AddShuiYinWord(string Path, string Path_sy)
{
string addText = "测试水印";
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(image, 0, 0, image.Width, image.Height);
System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
g.DrawString(addText, f, b, 15, 15);
g.Dispose();
image.Save(Path_sy);
image.Dispose();
}
/**/
/// <summary>
/// 在图片上生成图片水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_syp">生成的带图片水印的图片路径</param>
/// <param name="Path_sypf">水印图片路径</param>
protected void AddShuiYinPic(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();
}
CS文件
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileContentType = FileUpload1.PostedFile.ContentType;
if (fileContentType == "image/bmp" || fileContentType == "image/gif" ||
fileContentType == "image/pjpeg")
{
string name = FileUpload1.PostedFile.FileName; // 客户端文
件路径
FileInfo file = new FileInfo(name);
string fileName = file.Name; // 文件名称
string fileName_s = "s_" + file.Name; // 缩略图文
件名称
string fileName_sy = "sy_" + file.Name; // 水印图文
件名称(文字)
string fileName_syp = "syp_" + file.Name; // 水印图文
件名称(图片)
string webFilePath = Server.MapPath("file/" + fileName); // 服务器端
文件路径
string webFilePath_s = Server.MapPath("file/" + fileName_s); // 服务器端
缩略图路径
string webFilePath_sy = Server.MapPath("file/" + fileName_sy); // 服务器端
带水印图路径(文字)
string webFilePath_syp = Server.MapPath("file/" + fileName_syp); // 服务器
端带水印图路径(图片)
string webFilePath_sypf = Server.MapPath("file/shuiyin.jpg"); // 服务器端水
印图路径(图片)
if (!File.Exists(webFilePath))
{
try
{
FileUpload1.SaveAs(webFilePath); //
使用 SaveAs 方法保存文件
AddShuiYinWord(webFilePath, webFilePath_sy);
AddShuiYinPic(webFilePath, webFilePath_syp, webFilePath_sypf);
MakeThumbnail(webFilePath, webFilePath_s, 130, 130, "Cut"); //
生成缩略图方法
Label1.Text = "提示:文件“" + fileName + "”成功上传,并生成“" +
fileName_s + "”缩略图,文件类型为:" + FileUpload1.PostedFile.ContentType + ",文件大小为:
" + FileUpload1.PostedFile.ContentLength + "B";
}
catch (Exception ex)
{
Label1.Text = "提示:文件上传失败,失败原因:" + ex.Message;
}
}
else
{
Label1.Text = "提示:文件已经存在,请重命名后上传";
}
}
else
{
Label1.Text = "提示:文件类型不符";
}
}
}
/**/
/// <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_sy">生成的带文字水印的图片路径</param>
protected void AddShuiYinWord(string Path, string Path_sy)
{
string addText = "测试水印";
System.Drawing.Image image = System.Drawing.Image.FromFile(Path);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
g.DrawImage(image, 0, 0, image.Width, image.Height);
System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
g.DrawString(addText, f, b, 15, 15);
g.Dispose();
image.Save(Path_sy);
image.Dispose();
}
/**/
/// <summary>
/// 在图片上生成图片水印
/// </summary>
/// <param name="Path">原服务器图片路径</param>
/// <param name="Path_syp">生成的带图片水印的图片路径</param>
/// <param name="Path_sypf">水印图片路径</param>
protected void AddShuiYinPic(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();
}
}