`

修改图片大小并添加水印

阅读更多
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
分享到:
评论

相关推荐

    java实现图片上传并添加水印效果(文字水印,蒙版,logo图片),自动进行文字大小行数位置匹配 ,文字自动换行

    在Java编程中,实现图片上传并添加水印效果是一项常见的任务,这通常涉及到图像处理、图形用户界面(GUI)和文件I/O等多个方面。在这个项目中,我们将关注以下几个关键知识点: 1. **Java图像处理库**:Java标准库...

    java 图片水印 改变图片大小

    在Java编程领域,图片处理是一项常见的任务,包括添加水印、改变图片大小等。这里我们将深入探讨这些知识点,以及如何在Struts2框架下实现它们。 首先,让我们了解"图片水印"。水印通常用于保护版权或者为图片增加...

    java 水印(水印适应图片大小,但个别图片太小不支持)

    - **限制最小尺寸**:设置一个最小图片尺寸,如果图片小于这个尺寸,就不添加水印。 - **减少水印大小和透明度**:对于小图片,减小水印的大小和增加透明度,使其更加微妙,不会过分突出。 - **文字水印的字体大小...

    批量修改图片大小添加水印的工具

    每次旅游完都要成批的修改照片大小以便能发给朋友,照片多了改起来太麻烦,因此自制一个批量修改图片大小的软件,顺便把自己的名字,日期等水印加到照片上,洗出来也方便。 功能: 1.批量修改图片大小,按比例或按...

    Excel添加水印图片

    在`src`文件夹中,我们可以找到生成水印图片的类和Excel添加水印图片的源码。通常,这会涉及到创建一个自定义的`XSSFPictureData`对象,用于存储水印图片的数据。然后,我们会在Excel的每个工作表(`XSSFSheet`)上...

    图片批量添加水印(指定文字及图片)

    为了实现批量处理,可以使用Directory.GetFiles方法获取指定目录下的所有图片文件,然后对每个文件执行上述添加水印的过程,并保存结果。这样,一次操作就能处理大量图片。 在实际应用中,可能还需要考虑水印透明度...

    批量修改图片尺寸,添加水印工具

    批量修改图片尺寸和添加水印是提高效率的重要手段。以下是一些相关的知识点: 1. **批量处理**: 批量处理是指对一组文件进行相同操作的能力,如在本例中的图片尺寸修改和水印添加。这种功能在处理大量图片时非常...

    C#实现图片添加水印功能

    本文将深入探讨如何使用C#实现图片添加水印的功能。 首先,我们需要了解基本的图像处理概念。在计算机图形学中,水印通常指的是在图像上添加的半透明或淡化的文字、图像或标志,它不会显著改变原图的视觉效果,但...

    JS用层实现为图片添加水印效果

    ### JS用层实现为图片添加水印效果 #### 核心知识点解析 本文将详细介绍如何使用JavaScript(简称JS)和HTML结合的方式,在网页中的图片上动态添加水印效果。通过这种方式,可以有效地保护图片版权,增加网站的...

    图片批量添加水印裁剪工具

    对于大量图片的处理,手动操作无疑效率低下,因此出现了许多自动化工具,比如"图片批量添加水印裁剪工具"。这款软件专为提高工作效率而设计,允许用户一次性处理多张图片,进行裁剪和添加水印的操作,极大地节省了...

    C#批量添加图片水印源代码

    通过以上知识,你可以创建一个C#程序,实现批量为图片添加水印的功能。这个过程不仅涉及到基本的C#语法和类库使用,还涵盖了文件操作、图形绘制以及优化技巧等多个方面,对于提升你的编程技能非常有帮助。在实践中,...

    给图片添加图片水印

    这段代码会将名为`watermark.png`的水印图片添加到`original.jpg`的右下角,并保存为`output.jpg`。水印的大小会根据原图尺寸自动调整,位置也可以根据需求进行修改。 关于“工具”,可能指的是现成的软件或在线...

    C#图片批量添加水印源码

    当我们谈论"C#图片批量添加水印源码"时,这通常涉及到图像处理和编程的知识点。以下是一些相关的详细说明: 1. 图像处理库:C#中常用的图像处理库有System.Drawing,它是.NET框架的一部分,提供了处理图像的基本...

    YUV添加水印

    在实际操作中,开发者需要将这两个文件加载到内存,解析出YUV数据,然后按照预定的算法在Y分量上添加水印,最后再将修改后的YUV数据保存为新的文件。在处理过程中,需要注意保持YUV数据的原始格式,避免因为数据转换...

    web页面添加水印-自定义

    在网页上添加水印,主要通过操纵DOM元素(Document Object Model)和CSS样式来实现。首先,创建一个包含水印文本的DOM元素,然后将其放置在页面的适当位置,并应用相应的透明度和角度等CSS属性,以达到水印效果。 ...

    C# 图片添加水印系统

    在这个项目中,`Bitmap`类用于加载原始图片,并在上面添加水印。 2. **Graphics类**: `System.Drawing.Graphics`类提供了图形绘制的基本功能,如绘制线条、形状、文本以及在图像上进行其他操作。在添加水印的过程中...

    c# word /pdf添加水印

    在提供的压缩包文件中,"c# word 添加水印"和"c# 添加 水印"可能是代码示例或者教程资源,它们可以帮助你更深入地理解上述概念并动手实践。通过学习和实践这些代码,你将能够熟练掌握在C#环境下为Word和PDF文件添加...

    jxl对excel添加水印(含有setWaterMarkImage方法).zip

    在这个特定的场景中,我们将探讨如何利用`jxl`库为Excel文件添加水印,特别关注`setWaterMarkImage`方法。 首先,`jxl`库不直接提供内建的水印功能。但是,通过利用`jxl.write.WritableImage`类和一些图像处理技巧...

    aspose-words word添加水印的jar和licence文件

    在这个特定的案例中,"aspose-words word添加水印的jar和licence文件"是Aspose.Words的一个组件,专门用于在Word文档中添加水印功能。 水印是文档保护和标识的一种常见方法,通常用于在不遮挡文本的情况下向文档...

Global site tag (gtag.js) - Google Analytics