- 浏览: 88678 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
z694571598:
set 在哪?
js实现Set,Map,List,Queue -
coolboy09:
java并发编程实战上有类似的例子。我有一个疑惑,现在提出来和 ...
高速缓存实现 -
znlyj:
我同样关注,怎么更新缓存?另外,如果我不想将计算结果放到进程内 ...
高速缓存实现 -
Terry_zzz:
很好, 总结的很全面 谢谢!
深入浅出设计模式之单态模式(singleton) -
supertianyi:
好文,学习了
精通js中的Array
在实际的项目开发中,有可能遇到对图片的操作,比如加水印,或是设置图片的大小,先转载一篇文章,以记录相关的操作:
如果对网络文件进行设置格式大小的话,代码如下:
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(); }
发表评论
-
Maven2 POM.xml 配置元素详解
2011-06-16 08:56 1422<!--可以免费转载,转载时请注明出处 http:// ... -
深入浅出URL编码
2010-12-24 09:35 950一、问题: 编码问题是JAVA初学者在web开 ... -
mysql自动关闭服务、连接限制等问题的解决方法
2010-11-22 09:36 3039通过mysql服务器端程序mysql Administrato ... -
高速缓存实现
2010-06-08 10:39 3999各位大虾,本人实现 ... -
Java开发中文件上传应用
2010-05-15 23:54 1165今天闲暇无所事事,很长时间没有写博客了,突然想起很多开发 ... -
Java ClassLoader 详解
2010-03-23 12:33 1102类加载器是 Java 语言的一个创新,也是 Java 语言流行 ... -
Java垃圾回收机制和性能调优
2010-01-29 12:40 8801.JVM的gc概述 g ... -
Java编码问题
2009-11-25 16:36 744乱码对于使用非英语文 ... -
JDK+Tomcat +eclipse+MyEclipse的配置
2009-11-16 14:48 1191说一下关于JDK+Tomcat +ecli ... -
Java图片水印处理
2009-10-30 13:28 1555import java.awt.AlphaComposite; ... -
Java正则表达式的解释说明
2009-10-28 18:18 716表达式意义: 1.字符 x ... -
Freemarker语法
2009-10-21 15:29 792常用语法 EG.一个对象BOOK 1.输出 $…{book.n ... -
Servlet的两种跳转区别
2009-10-19 13:46 1288在servlet中,一般跳转都 ... -
Berkeley DB实例
2009-10-15 09:49 1339package test; import com.sleep ... -
Berkeley DB使用说明
2009-10-14 18:32 1780关键字: berkeley db java edi ... -
Tomcat配置详解
2009-09-29 11:44 970第一步:下载j2sdk和tomcat 到sun官方站(htt ... -
URLConnection的连接、超时、关闭用法总结
2009-09-10 12:57 1798ava中可以使用HttpURLConnection来请求WEB ... -
时间操作工具类
2009-09-09 14:27 3214在项目开发工程中,使用了很多时间的操作,改工具类提供了很 ... -
操作抓取网络资源
2009-09-08 12:57 861在实际开发过程中,大家难免遇到抓取网络资源的操作,列如:抓 ... -
java中操作Excel
2009-09-08 12:49 1061在企业级开发中,经常遇到读写excel的操作,在此将一些 ...
相关推荐
将上述知识点结合,我们可以创建一个Struts2 Action,接受用户上传的图片,然后在服务器端对图片进行处理,如添加水印并调整大小。首先,Action类需要声明一个`File`类型的字段和对应的字符串字段,用于接收文件。...
本知识点主要探讨如何在Java中实现自适应图片大小的水印功能,以及遇到图片过小时的处理策略。 首先,我们需要理解水印的基本概念。水印是在图像或文档上添加的一种视觉标记,它可以是文字、图像或者图形,用于表明...
10. **安全考虑**:在接收用户上传的文件时,应验证文件类型和大小,防止恶意文件上传,同时对生成的水印图片进行权限控制,避免非法访问。 通过以上这些知识点的结合运用,我们可以构建一个功能完善的Java应用,...
在Java编程中,给图片添加水印是一项常见的需求,无论是为了版权保护还是...但以上代码已经足够作为基础,帮助你开始在Java中实现图片加水印的功能。记得在运行此代码前,确保已经正确引入了Apache Commons Imaging库。
- **合并图片水印**:与合并文字水印类似,只是用`drawImage`方法绘制已调整大小的水印图片。 ```java private static void mergeImageWatermark(BufferedImage source, BufferedImage watermark, String ...
本篇将详细介绍如何使用Java来操作Word和PDF文档,并在其中的图片上生成水印。 首先,我们关注的是Java对Word文档的操作。Apache POI是一个非常流行的Java库,用于读写Microsoft Office格式的文件,包括Word(.docx...
"Java给图片加水印"这个主题,就是关于如何利用Java技术在图片上添加标识或文字,以保护版权或者增强视觉效果。下面我们将深入探讨这个话题。 首先,我们需要了解Java中的图像处理库,如Java Advanced Imaging (JAI...
这个“java图片加水印工具类”正是为了简化这一过程而设计的,它允许开发者通过调用预定义的方法,快速地在图片上添加文字或图形水印,无需每次都手动编写相同的功能代码。 首先,我们需要了解什么是水印。水印通常...
在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、裁剪、压缩以及添加水印等。以下将详细介绍这些知识点: 1. **等比例缩放图片**: 在Java中,我们可以使用`java.awt.image....
总结一下,Java 2D API和JAI库都能帮助我们实现图片加水印的功能。选择哪种方式取决于具体需求,如性能、复杂性和可用资源。理解这些概念和步骤,开发者就能根据实际情况编写出自己的Java代码,实现个性化的图片水印...
在Java编程环境中,图片压缩和加水印是两个常见的图像处理任务。这些功能在很多应用场景中都很重要,比如网站图片上传、社交媒体分享、数字资产管理等。下面将详细讲解这两个知识点,以及如何使用Java来实现。 首先...
针对"java 加水印 支持各种格式pdf doc 图片"这个主题,我们将深入探讨如何在Java中为PDF、DOC文档以及图片添加水印。 首先,让我们来看PDF文件的水印处理。PDF文档由于其跨平台性和阅读体验,被广泛应用。在Java中...
### Java 实现图片加水印知识点详解 #### 一、背景与概述 在现代网络环境中,图片加水印是一项常用的技术手段,它主要用于版权保护、品牌宣传等方面。通过本篇文章,我们将详细介绍如何利用Java编程语言实现给图片...
Graphics2D是Java 2D API的一部分,它提供了丰富的绘图和图形操作功能,包括添加水印到图像。下面将详细介绍如何使用Java Graphics2D实现文字和图片水印,以及如何在四个角落添加水印。 首先,我们要导入必要的Java...
在Java编程语言中,添加水印到图片是一种常见的图像处理操作,常用于版权保护或个性化定制。本示例代码提供了一种实现这一功能的方法,特别适用于配合验证码生成,确保其安全性和唯一性。下面我们将详细探讨这个过程...
在Java编程环境中,批量上传加水印是一项常见的需求,尤其在图像处理或版权保护的场景中。本项目手工实现了这一功能,提供了不依赖第三方库的解决方案。以下将详细阐述实现这个功能所需的关键知识点。 首先,我们...
请注意,这只是一个基础示例,实际使用时可能需要根据具体需求进行调整,比如添加多行水印、调整水印位置、支持图片水印等。此外,字体替换也需注意兼容性,不是所有的字体都能正确显示在PDF中。如果需要在不同操作...
水印通常由文字、图像或透明度调整过的原图组成,可以设置位置、大小、旋转角度以及透明度等参数。 在实际操作中,开发者会定义一个类来处理这些参数,例如创建一个`Watermark`类,其中包含水印文本、字体、颜色、...
综上所述,实现“上传预览文字水印图片水印”功能,需要结合前端的文件操作API、预览展示技术,后端的文件接收、处理和存储,以及可能的SSH远程操作。每个环节都涉及多方面的技术和安全考虑,确保了用户上传文件的...
在本文中,我们将深入探讨如何使用Java编程语言为图片添加文字或图像水印。这个话题源于一个名为"Java水印.rar"的压缩包文件,它包含了一段Java源代码,用于实现这一功能。该压缩包有四个文件:RunIt.bat(运行脚本...