1. /**
  2. * 把图片印刷到图片上
  3. *
  4. * @param pressImg --
  5. * 水印文件
  6. * @param targetinp --
  7. * 目标文件
  8. * @param x
  9. * --x坐标
  10. * @param y
  11. * --y坐标
  12. */
  13. public static File pressImage(File pressImg, InputStream targetinp,String format,
  14. int x, int y) {
  15. File file = null;
  16. try {
  17. //目标文件
  18. Image src = ImageIO.read(targetinp);
  19. int wideth = src.getWidth(null);
  20. int height = src.getHeight(null);
  21. BufferedImage image = new BufferedImage(wideth, height,
  22. BufferedImage.TYPE_INT_RGB);
  23. Graphics g = image.createGraphics();
  24. g.drawImage(src, 0, 0, wideth, height, null);
  25. //水印文件
  26. Image src_biao = ImageIO.read(pressImg);
  27. int wideth_biao = src_biao.getWidth(null);
  28. int height_biao = src_biao.getHeight(null);
  29. g.drawImage(src_biao, (wideth - wideth_biao),
  30. (height - height_biao)-40 , wideth_biao, height_biao, null);
  31. //水印文件结束
  32. g.dispose();
  33. ByteArrayOutputStream os = new ByteArrayOutputStream();
  34. ImageIO.write(image,format,os);
  35. byte [] bytes = os.toByteArray();
  36. BufferedOutputStream bos = null;
  37. FileOutputStream fos = null;
  38. file = new File("temp");
  39. fos = new FileOutputStream(file);
  40. bos = new BufferedOutputStream(fos);
  41. bos.write(bytes);
  42. bos.close();
  43. fos.close();
  44. os.close();
  45. } catch (Exception e) {
  46. e.printStackTrace();
  47. }
  48. return file;
  49. }


以上工具代码

无论压缩 水印   都是差不多用Image.read  
在spring muitpartfile 读取传入的file ,出现 can't read input file , 由于传入file 引起的问题
改为 inputstream即可
不过最好使用InputStream读


ps :


ImageIO.read(targetinp);

ImageIO的read 静态方法 可以传入 url , inputstream , file 多个重载方法




java web 打水印的更多相关文章

  1. Java Web 中使用ffmpeg实现视频转码、视频截图

    Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html  ...

  2. Java Web应用软件保护方法

    1 代码混淆概述目前针对Java源文件方法主要有以下几种方法:本地编译技术.数字水印技术.ClassLoader加密技术以及代码混淆技术.Java本地编译是指将Java应用程序编译成本地应用程序,如W ...

  3. 高效 Java Web 开发框架 JessMA v3.5.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  4. 高效 Java Web 开发框架 JessMA v3.4.1

    JessMA 是功能完备的高性能 Full-Stack Web 应用开发框架,内置可扩展的 MVC Web 基础架构和 DAO 数据库访问组件(内部已提供了 Hibernate.MyBatis 与 J ...

  5. java web 之客户关系管理系统

    这个周末真的是觉得自己学会了一个比较高大上的本领,为什么这么觉得呢?那是因为星期六的时候觉得自己可以看看源码能做出来,可是让我头疼的是花费了一上午的时间还是没有弄出来,还好上天给了我机会,要是没有老师 ...

  6. Java Web中的中文编码

    Java Web开发中经常会遇到中文编码问题,那么为什么需要编码呢?因为人类需要表示的符号太多,无法用1个字节来表示,而计算机中存储信息最小单元为1个字节.所以必须指定char与byte之间的编码规则 ...

  7. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  8. JAVA WEB项目中各种路径的获取

    JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报  分类: JAVA开发(41)  1.可以在s ...

  9. JAVA WEB WITH IDEA

    本文主要介绍使用IDEA开发环境,创建JAVA WEB 工程,并介绍war包的制作过程. 1 创建MAVEN工程

随机推荐

  1. exVim安装

    安装 安装必备 Vim 7.3 or higher. Vundle or Pathogen 下载/更新exVim 注意事项 安装exVim将不会覆盖你已经存在的Vim环境,这个仓库所包含的文件,变化, ...

  2. HDU 4372 - Count the Buildings(组合计数)

    首先想过n^3的组合方法,即f(i,j,k)=f(i-1,j,k)*(i-2)+f(i-1,j-1,k)+f(i-1,j,k-1),肯定搞不定 然后想了好久没有效果,就去逛大神博客了,结果发现需要用到 ...

  3. java 获取进程的processId

    package us.mine.demo.jvm.util; import java.lang.management.ManagementFactory; import java.lang.manag ...

  4. 2017.12.25 Mybatis物理分页插件PageHelper的使用(二)

    参考来自: 官方文档的说明:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 上篇博客 ...

  5. winlogon.exe应用程序错误怎么办

    winlogon.exe应用程序错误 求解决办法,重装,还原一定能解决就不要说了,我要其他办法 最佳答案 winlogon.exe 是控制你的系统登陆的程序,是系统绝对核心进程,用来管理系统用户登陆! ...

  6. PHP数组问题

    转换为数组 对于任意 integer , float , string , boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此 ...

  7. vue - utils.js

    exports:导出功能函数或变量 module.exports:默认导出{} ------------------------------------------------------------ ...

  8. Hibernate关系映射(注解)

    1.类级别注解 @Entity     映射实体类 @Table    映射数句库表 @Entity(name="tableName") - 必须,注解将一个类声明为一个实体bea ...

  9. 算法笔记_072:N皇后问题(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 把n个皇后放在一个n*n的棋盘上,使得任何两个皇后都不能相互攻击,即它们不能同行,不能同列,也不能位于同一条对角线上. 2 解决方案 本文采用全排列 ...

  10. static、final修饰符、内部类

    static修饰符: static修饰符能够与属性.方法和内部类一起使用,表示静态的.类中的静态变量和静态方法能够与类名一起使用.不须要创建一个类的对象来訪问该类的静态成员. class Static ...