`
soongbo
  • 浏览: 88678 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java操作图片改变大小加水印

    博客分类:
  • Java
阅读更多
   在实际的项目开发中,有可能遇到对图片的操作,比如加水印,或是设置图片的大小,先转载一篇文章,以记录相关的操作:
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


}

如果对网络文件进行设置格式大小的话,代码如下:
java.io.File file = new java.io.File(srcImgFile);
		if (file.exists())
			System.out.println("文件存在");
		else
			System.out.println("文件不存在");

		int i = srcImgFile.lastIndexOf(".");
		int sLen = srcImgFile.length();
		String suffix = srcImgFile.substring(i, sLen); // 带点+后缀名
		String urlName = srcImgFile.substring(0, i); // 路径+文件名
		String newUrlName = "D:/" + addChar + suffix;
		// System.out.print("新文件名为"+newUrlName);
		Image src = null;
		/**
		 * 网络文件抓取同时设置其宽高
		 */
		try {
			URL url = new URL(srcImgFile);
			HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
			urlcon.connect();
			src = javax.imageio.ImageIO.read(urlcon.getInputStream());
			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();
		}
分享到:
评论

相关推荐

    java 图片水印 改变图片大小

    将上述知识点结合,我们可以创建一个Struts2 Action,接受用户上传的图片,然后在服务器端对图片进行处理,如添加水印并调整大小。首先,Action类需要声明一个`File`类型的字段和对应的字符串字段,用于接收文件。...

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

    本知识点主要探讨如何在Java中实现自适应图片大小的水印功能,以及遇到图片过小时的处理策略。 首先,我们需要理解水印的基本概念。水印是在图像或文档上添加的一种视觉标记,它可以是文字、图像或者图形,用于表明...

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

    10. **安全考虑**:在接收用户上传的文件时,应验证文件类型和大小,防止恶意文件上传,同时对生成的水印图片进行权限控制,避免非法访问。 通过以上这些知识点的结合运用,我们可以构建一个功能完善的Java应用,...

    JAVA实现给图片增加图片水印或者文字水印-依赖包

    在Java编程中,给图片添加水印是一项常见的需求,无论是为了版权保护还是...但以上代码已经足够作为基础,帮助你开始在Java中实现图片加水印的功能。记得在运行此代码前,确保已经正确引入了Apache Commons Imaging库。

    java给图片添加水印

    - **合并图片水印**:与合并文字水印类似,只是用`drawImage`方法绘制已调整大小的水印图片。 ```java private static void mergeImageWatermark(BufferedImage source, BufferedImage watermark, String ...

    java操作wordpdf图片生成图片水印

    本篇将详细介绍如何使用Java来操作Word和PDF文档,并在其中的图片上生成水印。 首先,我们关注的是Java对Word文档的操作。Apache POI是一个非常流行的Java库,用于读写Microsoft Office格式的文件,包括Word(.docx...

    Java给图片加水印

    "Java给图片加水印"这个主题,就是关于如何利用Java技术在图片上添加标识或文字,以保护版权或者增强视觉效果。下面我们将深入探讨这个话题。 首先,我们需要了解Java中的图像处理库,如Java Advanced Imaging (JAI...

    java图片加水印工具类

    这个“java图片加水印工具类”正是为了简化这一过程而设计的,它允许开发者通过调用预定义的方法,快速地在图片上添加文字或图形水印,无需每次都手动编写相同的功能代码。 首先,我们需要了解什么是水印。水印通常...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....

    java实现对图片加水印

    总结一下,Java 2D API和JAI库都能帮助我们实现图片加水印的功能。选择哪种方式取决于具体需求,如性能、复杂性和可用资源。理解这些概念和步骤,开发者就能根据实际情况编写出自己的Java代码,实现个性化的图片水印...

    java 图片压缩和加水印

    在Java编程环境中,图片压缩和加水印是两个常见的图像处理任务。这些功能在很多应用场景中都很重要,比如网站图片上传、社交媒体分享、数字资产管理等。下面将详细讲解这两个知识点,以及如何使用Java来实现。 首先...

    java 加水印 支持各种格式pdf doc 图片

    针对"java 加水印 支持各种格式pdf doc 图片"这个主题,我们将深入探讨如何在Java中为PDF、DOC文档以及图片添加水印。 首先,让我们来看PDF文件的水印处理。PDF文档由于其跨平台性和阅读体验,被广泛应用。在Java中...

    java实现图片加水印.txt

    ### Java 实现图片加水印知识点详解 #### 一、背景与概述 在现代网络环境中,图片加水印是一项常用的技术手段,它主要用于版权保护、品牌宣传等方面。通过本篇文章,我们将详细介绍如何利用Java编程语言实现给图片...

    水印 java Graphics2D实现文字图片水印

    Graphics2D是Java 2D API的一部分,它提供了丰富的绘图和图形操作功能,包括添加水印到图像。下面将详细介绍如何使用Java Graphics2D实现文字和图片水印,以及如何在四个角落添加水印。 首先,我们要导入必要的Java...

    用java实现在图片上加水印小例子的源码

    在Java编程语言中,添加水印到图片是一种常见的图像处理操作,常用于版权保护或个性化定制。本示例代码提供了一种实现这一功能的方法,特别适用于配合验证码生成,确保其安全性和唯一性。下面我们将详细探讨这个过程...

    java批量上传加水印

    在Java编程环境中,批量上传加水印是一项常见的需求,尤其在图像处理或版权保护的场景中。本项目手工实现了这一功能,提供了不依赖第三方库的解决方案。以下将详细阐述实现这个功能所需的关键知识点。 首先,我们...

    java代码,给pdf文件加水印

    请注意,这只是一个基础示例,实际使用时可能需要根据具体需求进行调整,比如添加多行水印、调整水印位置、支持图片水印等。此外,字体替换也需注意兼容性,不是所有的字体都能正确显示在PDF中。如果需要在不同操作...

    Java写的为图片添加水印的软件(含源代码)

    水印通常由文字、图像或透明度调整过的原图组成,可以设置位置、大小、旋转角度以及透明度等参数。 在实际操作中,开发者会定义一个类来处理这些参数,例如创建一个`Watermark`类,其中包含水印文本、字体、颜色、...

    上传 预览 文字水印 图片水印

    综上所述,实现“上传预览文字水印图片水印”功能,需要结合前端的文件操作API、预览展示技术,后端的文件接收、处理和存储,以及可能的SSH远程操作。每个环节都涉及多方面的技术和安全考虑,确保了用户上传文件的...

    用Java给图片添加文字或图像水印

    在本文中,我们将深入探讨如何使用Java编程语言为图片添加文字或图像水印。这个话题源于一个名为"Java水印.rar"的压缩包文件,它包含了一段Java源代码,用于实现这一功能。该压缩包有四个文件:RunIt.bat(运行脚本...

Global site tag (gtag.js) - Google Analytics