- 浏览: 210729 次
- 性别:
- 来自: 北京
文章分类
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import javax.imageio.ImageIO.*;
import javax.imageio.IIOException;
import java.io.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.servlet.http.HttpSession;
// 图片操作,改变大小加水印***********@与羊共舞的狼
public class ImageOperate {
/**
* 给图片加水印,但不改变大小
* @param strOriginalFileName String(原始文件)
* @param strWaterMarkFileName String(水印后)
*/
public void waterMark(String strOriginalFileName,String strWaterMarkFileName,HttpSession session){
try{
//源文件
String root=session.getServletContext().getRealPath("/");
File fileOriginal = new File(root+strOriginalFileName);
Image imageOriginal = ImageIO.read(fileOriginal);
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
System.out.println("widthOriginal:" + widthOriginal + "theightOriginal:" + heightOriginal);
BufferedImage bufImage = new BufferedImage(widthOriginal,heightOriginal,BufferedImage.TYPE_INT_RGB);
Graphics g = bufImage.createGraphics();
g.drawImage(imageOriginal,0,0,widthOriginal,heightOriginal,null);
//水印文件
File fileWaterMark = new File(root+strWaterMarkFileName);
Image imageWaterMark = ImageIO.read(fileWaterMark);
int widthWaterMark = imageWaterMark.getWidth(null);
int heightWaterMark = imageWaterMark.getHeight(null);
System.out.println("widthWaterMark:" + widthWaterMark + "theightWaterMark:" + heightWaterMark);
//水印文件在源文件的右下角
g.drawImage(imageWaterMark,widthOriginal - widthWaterMark,heightOriginal - heightWaterMark,widthWaterMark,heightWaterMark,null);
g.dispose();
FileOutputStream fos = new FileOutputStream( root+strOriginalFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImage);
fos.flush();
fos.close();
fos = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 修改图片大小
*/
public void alterSize(String srcImgFile,String addChar,int new_w,int new_h,HttpSession session){
//System.out.print("文件路径为:"+"//"+srcImgFile);
String root=session.getServletContext().getRealPath("/");
java.io.File file=new java.io.File(root+srcImgFile);
if(file.exists())
System.out.println("文件存在");
else
System.out.println("文件不存在");
int i = srcImgFile.indexOf(".");
int sLen = srcImgFile.length();
String suffix = srcImgFile.substring(i, sLen); //带点+后缀名
String urlName=srcImgFile.substring(0,i); //路径+文件名
String newUrlName=root+urlName+addChar+suffix;
//System.out.print("新文件名为"+newUrlName);
Image src=null;
try
{
src = javax.imageio.ImageIO.read(file);
java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w,new_h,java.awt.image.BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);
FileOutputStream newimage=new FileOutputStream(newUrlName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
}
catch(IIOException ee)
{
ee.printStackTrace();
System.out.print("这里出错了");
}
catch(Exception e)
{
e.printStackTrace();
}
}//End sizeAlter
}
此文转载自http://www.blogjava.net/parable-myth/archive/2008/02/20/77766.html
import java.awt.image.*;
import javax.imageio.ImageIO;
import javax.imageio.ImageIO.*;
import javax.imageio.IIOException;
import java.io.*;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import javax.servlet.http.HttpSession;
// 图片操作,改变大小加水印***********@与羊共舞的狼
public class ImageOperate {
/**
* 给图片加水印,但不改变大小
* @param strOriginalFileName String(原始文件)
* @param strWaterMarkFileName String(水印后)
*/
public void waterMark(String strOriginalFileName,String strWaterMarkFileName,HttpSession session){
try{
//源文件
String root=session.getServletContext().getRealPath("/");
File fileOriginal = new File(root+strOriginalFileName);
Image imageOriginal = ImageIO.read(fileOriginal);
int widthOriginal = imageOriginal.getWidth(null);
int heightOriginal = imageOriginal.getHeight(null);
System.out.println("widthOriginal:" + widthOriginal + "theightOriginal:" + heightOriginal);
BufferedImage bufImage = new BufferedImage(widthOriginal,heightOriginal,BufferedImage.TYPE_INT_RGB);
Graphics g = bufImage.createGraphics();
g.drawImage(imageOriginal,0,0,widthOriginal,heightOriginal,null);
//水印文件
File fileWaterMark = new File(root+strWaterMarkFileName);
Image imageWaterMark = ImageIO.read(fileWaterMark);
int widthWaterMark = imageWaterMark.getWidth(null);
int heightWaterMark = imageWaterMark.getHeight(null);
System.out.println("widthWaterMark:" + widthWaterMark + "theightWaterMark:" + heightWaterMark);
//水印文件在源文件的右下角
g.drawImage(imageWaterMark,widthOriginal - widthWaterMark,heightOriginal - heightWaterMark,widthWaterMark,heightWaterMark,null);
g.dispose();
FileOutputStream fos = new FileOutputStream( root+strOriginalFileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);
encoder.encode(bufImage);
fos.flush();
fos.close();
fos = null;
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* 修改图片大小
*/
public void alterSize(String srcImgFile,String addChar,int new_w,int new_h,HttpSession session){
//System.out.print("文件路径为:"+"//"+srcImgFile);
String root=session.getServletContext().getRealPath("/");
java.io.File file=new java.io.File(root+srcImgFile);
if(file.exists())
System.out.println("文件存在");
else
System.out.println("文件不存在");
int i = srcImgFile.indexOf(".");
int sLen = srcImgFile.length();
String suffix = srcImgFile.substring(i, sLen); //带点+后缀名
String urlName=srcImgFile.substring(0,i); //路径+文件名
String newUrlName=root+urlName+addChar+suffix;
//System.out.print("新文件名为"+newUrlName);
Image src=null;
try
{
src = javax.imageio.ImageIO.read(file);
java.awt.image.BufferedImage tag = new java.awt.image.BufferedImage(new_w,new_h,java.awt.image.BufferedImage.TYPE_INT_RGB);
tag.getGraphics().drawImage(src,0,0,new_w,new_h,null);
FileOutputStream newimage=new FileOutputStream(newUrlName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(newimage);
encoder.encode(tag); //近JPEG编码
newimage.close();
}
catch(IIOException ee)
{
ee.printStackTrace();
System.out.print("这里出错了");
}
catch(Exception e)
{
e.printStackTrace();
}
}//End sizeAlter
}
此文转载自http://www.blogjava.net/parable-myth/archive/2008/02/20/77766.html
发表评论
-
JVM启动时指定-Dfile.encoding="UTF8"的作用
2013-10-17 13:50 2265简单来说就是指定JVM默认的编码方式 java io中很多方法 ... -
java多线程 小记
2012-04-15 14:49 0thread join的方法 http://blog.csdn ... -
浅析多线程
2012-04-08 22:35 0线程组 线程是被 ... -
多线程意外中断处理
2012-04-08 20:54 0本文转自:http://peirenlei.iteye.com ... -
多线程项目学习
2012-04-08 20:35 0线程组的作用: ThreadGroup类中的某些方法,可以对线 ... -
java 静态成员变量的内存分配
2012-04-06 10:28 0静态成员变量是属于类变量,即当JVM加载class文件到虚拟机 ... -
深度克隆与浅克隆
2012-04-05 16:31 1106要想实现某个对象的克隆需要该对象实现java.lang.Clo ... -
JVM的内存分配
2012-03-16 10:06 0Java里的堆(heap)栈(stack)和方法区(metho ... -
HashMap添加数据的过程
2012-03-14 22:18 7065当添加的元素的key为null ... -
几种classloader的加载范围
2012-02-28 12:43 1302Bootstrap class loader:最顶级的clas ... -
利用正则表达式获取网页中多处重复出现的标签数据
2012-02-21 11:21 2691public static void main(String[ ... -
标准的URLConnection请求
2012-01-13 16:39 0只写了主要的代码 URL url = new URL(urlS ... -
常用的ClassLoader的加载范围
2012-01-13 13:53 1383WebAppClassLoader装载器装作文件的范围: 会加 ... -
ClassLoader.getSystemClassLoader().loadClass()和Class.forName()的区别
2012-01-13 13:08 0class A { static { System.ou ... -
httpClient超时解决办法
2012-01-12 16:47 0DefaultHttpClient: 请求超时 httpcli ... -
项目中的使用技巧小记
2012-01-10 21:11 570实现数据在多线程之间的共享: 因为线程的成员变量是各个该线程实 ... -
ThreadLocal
2012-01-10 08:55 1398ThreadLocal是实现线程范围内的数据共享,即不同线程获 ... -
线程加锁优化
2012-01-08 13:19 0实际上,在某些classes中,这种instance方法的同步 ... -
实现多线程使用继承Thread类和Runnable的原因
2012-01-03 15:09 1369我们都知道实现多线程的两种方式,一种是继承Thread类,另一 ... -
一个简单的socket编程实例
2011-12-28 10:50 1597转正于http://www.cnblogs.com/linzh ...
相关推荐
每次旅游完都要成批的修改照片大小以便能发给朋友,照片多了改起来太麻烦,因此自制一个批量修改图片大小的软件,顺便把自己的名字,日期等水印加到照片上,洗出来也方便。 功能: 1.批量修改图片大小,按比例或按...
struts2 上传 java 图片水印 改变图片大小
java 水印(水印适应图片大小,但个别图片太小不支持)
批量图片修改的大小,添加水印等功能...
使用vs2015编辑,可以直接运行查看源代码 文字水印可改变水印大小,水印位置,水印透明。 图片水印可改变水印大小,水印位置,水印透明。 内有直接封装好的类可以直接运行,懒人福利
可配置的图片批量添加水印。文字字体、字号、颜色、水印添加位置等皆可配置,图片水印的大小、位置可配置。
java 处理图片大小等比例缩放;图片裁剪;支持图片压缩不失真;支持图片添加水印;支持动态图的处理;支持自定义图片大小的转换 等 压缩包中内附使用说明
文件大小 图片大小 比例缩放 水印添加 格式转换
功能概述:批量更改大小、批量图片压缩、批量添加水印、批量更改格式、批量增加特效等。 修订概述: 新增水印图片旋转功能。 新增图片旋转、灰色、反色、模糊、锐化、棕色、红色、绿色、蓝色、青色、品红、黄色等...
image tuner是免费的图片批量缩放、转换、水印添加和改名软件。支持jpeg, bmp, png, tiff和gif等常见图像格式。基于一个非常快速的图像处理引擎,这个获奖软件有一个比较低限度的控制,将帮助您进行比较典型的照片和...
这是一个添加水印的vue组件,支持传入富文本和标签。只需要传入你想添加的水印内容,会自动去计算水印的数量和大小。其他的完全不用你去关心。 使用方法:在你需要的地方向引用组件一样引用它就ok了 watermark 水印...
功能概述:批量修改大小、批量图片压缩、批量添加水印、批量更改格式等
该合集包含 全格式图片批量修改尺寸 、图片格式批量转换、相片根据时间批量改名等四个软件,非常好用
点击一个按钮在几分钟内一次对数百张照片调整大小、旋转和添加水印。 添加圆角到您的照片: 给您的照片添加圆角,使其脱颖而出。 添加文本和图像水印: 在您的照片上添加名称、版权或 LOGO 水印。 可完全自定义的...
可用于大量图片添加水印:无论多少图片,只要将存放这些图片的顶层文件夹直接拖入软件即可,仅添加一条记录,功能相同; 支持嵌套文件夹功能:图片的添加、加完水印之后输出和备份时都可按原文件夹的结构原搬不动...
uMark Pro是一款专业的图像水印制作工具. uMark Pro 5.2 汉化版主要特点:支持BMP,JPG,GIF,PNG和TIFF图像类型 作为水印的文字或标识 作为水印添加EXIF属性 ...©和®的特殊字符,如添加水印
图片批处理软件-用于淘宝店的图片加工-如加边框、水印、修改图片大小和尺寸、导入输出功能支持
批处理 - 一次为数百张图像添加水印 文本的可自定义字体格式选项 添加半透明水印 在图像上的预定义或自定义位置放置水印 任意程度的旋转水印 水平/垂直或同时平铺水印 Resize输出图像,生成缩略图...
迷你图片批量处理工具 V2.0 支持图片修改大小、压缩、添加水印、更改格式等功能,能帮您迅速大批量处理图片的工具软件。 主要功能概述:批量修改大小、批量图片压缩、批量添加水印、批量更改格式等. 本版本修订概述: ...
批量处理图片工具 批量添加水印(文字。图片) 批量缩放大小 缩放方式 批量改变图片格式(GIF,JPG,PNG,BMP等8种)