- 浏览: 216184 次
- 性别:
- 来自: 北京
文章分类
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 2392简单来说就是指定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 1173要想实现某个对象的克隆需要该对象实现java.lang.Clo ... -
JVM的内存分配
2012-03-16 10:06 0Java里的堆(heap)栈(stack)和方法区(metho ... -
HashMap添加数据的过程
2012-03-14 22:18 7133当添加的元素的key为null ... -
几种classloader的加载范围
2012-02-28 12:43 1363Bootstrap class loader:最顶级的clas ... -
利用正则表达式获取网页中多处重复出现的标签数据
2012-02-21 11:21 2737public static void main(String[ ... -
标准的URLConnection请求
2012-01-13 16:39 0只写了主要的代码 URL url = new URL(urlS ... -
常用的ClassLoader的加载范围
2012-01-13 13:53 1434WebAppClassLoader装载器装作文件的范围: 会加 ... -
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 611实现数据在多线程之间的共享: 因为线程的成员变量是各个该线程实 ... -
ThreadLocal
2012-01-10 08:55 1445ThreadLocal是实现线程范围内的数据共享,即不同线程获 ... -
线程加锁优化
2012-01-08 13:19 0实际上,在某些classes中,这种instance方法的同步 ... -
实现多线程使用继承Thread类和Runnable的原因
2012-01-03 15:09 1403我们都知道实现多线程的两种方式,一种是继承Thread类,另一 ... -
一个简单的socket编程实例
2011-12-28 10:50 1634转正于http://www.cnblogs.com/linzh ...
相关推荐
在Java编程中,实现图片上传并添加水印效果是一项常见的任务,这通常涉及到图像处理、图形用户界面(GUI)和文件I/O等多个方面。在这个项目中,我们将关注以下几个关键知识点: 1. **Java图像处理库**:Java标准库...
在Java编程领域,图片处理是一项常见的任务,包括添加水印、改变图片大小等。这里我们将深入探讨这些知识点,以及如何在Struts2框架下实现它们。 首先,让我们了解"图片水印"。水印通常用于保护版权或者为图片增加...
- **限制最小尺寸**:设置一个最小图片尺寸,如果图片小于这个尺寸,就不添加水印。 - **减少水印大小和透明度**:对于小图片,减小水印的大小和增加透明度,使其更加微妙,不会过分突出。 - **文字水印的字体大小...
每次旅游完都要成批的修改照片大小以便能发给朋友,照片多了改起来太麻烦,因此自制一个批量修改图片大小的软件,顺便把自己的名字,日期等水印加到照片上,洗出来也方便。 功能: 1.批量修改图片大小,按比例或按...
在`src`文件夹中,我们可以找到生成水印图片的类和Excel添加水印图片的源码。通常,这会涉及到创建一个自定义的`XSSFPictureData`对象,用于存储水印图片的数据。然后,我们会在Excel的每个工作表(`XSSFSheet`)上...
为了实现批量处理,可以使用Directory.GetFiles方法获取指定目录下的所有图片文件,然后对每个文件执行上述添加水印的过程,并保存结果。这样,一次操作就能处理大量图片。 在实际应用中,可能还需要考虑水印透明度...
批量修改图片尺寸和添加水印是提高效率的重要手段。以下是一些相关的知识点: 1. **批量处理**: 批量处理是指对一组文件进行相同操作的能力,如在本例中的图片尺寸修改和水印添加。这种功能在处理大量图片时非常...
本文将深入探讨如何使用C#实现图片添加水印的功能。 首先,我们需要了解基本的图像处理概念。在计算机图形学中,水印通常指的是在图像上添加的半透明或淡化的文字、图像或标志,它不会显著改变原图的视觉效果,但...
### JS用层实现为图片添加水印效果 #### 核心知识点解析 本文将详细介绍如何使用JavaScript(简称JS)和HTML结合的方式,在网页中的图片上动态添加水印效果。通过这种方式,可以有效地保护图片版权,增加网站的...
对于大量图片的处理,手动操作无疑效率低下,因此出现了许多自动化工具,比如"图片批量添加水印裁剪工具"。这款软件专为提高工作效率而设计,允许用户一次性处理多张图片,进行裁剪和添加水印的操作,极大地节省了...
通过以上知识,你可以创建一个C#程序,实现批量为图片添加水印的功能。这个过程不仅涉及到基本的C#语法和类库使用,还涵盖了文件操作、图形绘制以及优化技巧等多个方面,对于提升你的编程技能非常有帮助。在实践中,...
这段代码会将名为`watermark.png`的水印图片添加到`original.jpg`的右下角,并保存为`output.jpg`。水印的大小会根据原图尺寸自动调整,位置也可以根据需求进行修改。 关于“工具”,可能指的是现成的软件或在线...
当我们谈论"C#图片批量添加水印源码"时,这通常涉及到图像处理和编程的知识点。以下是一些相关的详细说明: 1. 图像处理库:C#中常用的图像处理库有System.Drawing,它是.NET框架的一部分,提供了处理图像的基本...
在实际操作中,开发者需要将这两个文件加载到内存,解析出YUV数据,然后按照预定的算法在Y分量上添加水印,最后再将修改后的YUV数据保存为新的文件。在处理过程中,需要注意保持YUV数据的原始格式,避免因为数据转换...
在网页上添加水印,主要通过操纵DOM元素(Document Object Model)和CSS样式来实现。首先,创建一个包含水印文本的DOM元素,然后将其放置在页面的适当位置,并应用相应的透明度和角度等CSS属性,以达到水印效果。 ...
在这个项目中,`Bitmap`类用于加载原始图片,并在上面添加水印。 2. **Graphics类**: `System.Drawing.Graphics`类提供了图形绘制的基本功能,如绘制线条、形状、文本以及在图像上进行其他操作。在添加水印的过程中...
在提供的压缩包文件中,"c# word 添加水印"和"c# 添加 水印"可能是代码示例或者教程资源,它们可以帮助你更深入地理解上述概念并动手实践。通过学习和实践这些代码,你将能够熟练掌握在C#环境下为Word和PDF文件添加...
在这个特定的场景中,我们将探讨如何利用`jxl`库为Excel文件添加水印,特别关注`setWaterMarkImage`方法。 首先,`jxl`库不直接提供内建的水印功能。但是,通过利用`jxl.write.WritableImage`类和一些图像处理技巧...
在这个特定的案例中,"aspose-words word添加水印的jar和licence文件"是Aspose.Words的一个组件,专门用于在Word文档中添加水印功能。 水印是文档保护和标识的一种常见方法,通常用于在不遮挡文本的情况下向文档...