直接上代码:

  1. 图片压缩加水印

        @Testpublic void TetsShuiYin() {//        String path1 = "D:\\temp\\Flower.PNG";
    //        String path1 = "D:\\temp\\A@00171289834389489523G0023_1612888117303.png";String path1 = "D:\\temp\\微信图片_20210507102616.jpg";String path2 = "D:\\temp\\image\\" + System.currentTimeMillis() + ".jpg";String[] strings = new String[3];strings[0] = "主任务号:922104113414345";strings[1] = "子任务号:12345678765432345";strings[2] = "上传时间:2021-04-21 17:23:09";byte[] a = generateText(strings, path1, "宋体", 28, Color.RED, Font.PLAIN);try {assert a != null;byte2image(a, path2);} catch (AssertionError e) {System.out.println("shuchu");}}/*** 添加文字水印的方法** @param pressText 要添加的文字* @param path      文件路径,这里只处理了了本地文件,未处理网络图片* @param fontName  文字的字体名称* @param fontSize  文字的大小* @param fontColor 文字的眼神* @param style     文字的格式,如Font.BOLD++Font.ITALIC表示粗体斜体* @return*/private static byte[] generateText(String[] pressText, String path, String fontName,int fontSize, Color fontColor, int style) {if (pressText.length < 1) {return new byte[0];}try {BufferedImage bgImage = ImageIO.read(new FileInputStream(new File(path)));int wideth = bgImage.getWidth();int height = bgImage.getHeight();BufferedImage image = new BufferedImage(wideth, height, BufferedImage.TYPE_INT_RGB);Graphics2D g = image.createGraphics();g.drawImage(bgImage, 0, 0, wideth, height, null);/* 消除java.awt.Font字体的锯齿 */g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);//设置字体大小、颜色等g.setColor(fontColor);Font font = new Font("宋体", Font.PLAIN, fontSize);g.setFont(font);double x1 = wideth / fontSize;double x2 = pressText[0].length() / x1;double beginX = wideth - (wideth * x2);double y1 = height / fontSize; //能放多少个字System.out.println("height " + height);System.out.println("y1 " + y1);for (int i = 0; i < pressText.length; i++) {//字体默认放在右下角 根据图片自适应double s = (i + 1)*fontSize;double h = height -s;g.drawString(pressText[i], (int) beginX, (int) h);}g.dispose();ByteArrayOutputStream out = new ByteArrayOutputStream();ImageIO.write(image, "jpeg", out);return out.toByteArray();} catch (Exception e) {e.printStackTrace();}return null;}/*** 将字节数组转换为本地图片** @param data* @param path*/public static void byte2image(byte[] data, String path) {if (data.length < 3 || path.equals("")) {return;}try {FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));imageOutput.write(data, 0, data.length);imageOutput.close();System.out.println("生成图片成功:" + path);} catch (Exception ex) {ex.printStackTrace();}}
    

java 压缩图片时候加水印相关推荐

  1. JAVA实现图片加水印及Base64图片字符串加水印

    JAVA实现图片加水印及Base64图片字符串加水印 可将根据不同需求选择场景一,场景二来实现家水印操作,个人感觉比我上一遍文章<base64字符串加水印 >实在 场景一: 涉及上送过来的 ...

  2. 咖啡汪日志——JAVA导出pdf文件加水印 文字+图片、文字

    咖啡汪日志--JAVA导出pdf文件加水印 文字和图片.文字 hello,又大家见面了! 作为一只不是在戏精就是在戏精路上的哈士奇,今天要展示给大家的就是如何快捷地给pdf文件增加各种水印.嗷呜呜,前 ...

  3. 图片怎么加水印?图片加水印用什么软件?

    不知道大家有没有遇到过这种情况,自己用心拍摄制作的图片,分享到社交平台后就被其他人盗用,找对方理论结果还不承认,让人很是恼火.因此,现在将图片或视频分享到网上时,我都会先给文件添加属于我自己的水印,减 ...

  4. 图片怎么加水印?添加水印其实很简单

    图片怎么加水印?相信很多作摄影师的小伙伴们都会在日常的分享中给自己的照片添加水印.我们都知道拍摄一张出色的照片背后付出了很多,给图片添加水印是对自己照片版权的保护.那么问题来了,如何好看的添加水印呢? ...

  5. Spring Boot 所有文件下载,图片下载加水印

    一.图片的预览和文件的下载,用FreeMaork不用写代码就可以轻松搞定,template-loader-path是文件的位置,可以添加多个文件访问地址,用逗号隔开. spring:resources ...

  6. Linux打印添加水印,Linux 下给图片批量加水印

    一个非盈利组织的项目负责人突发奇想想给他们网站上的每张照片加上水印,说实话那些照片都是平时活动.party 的生活照片用不着用水印那么夸张,第一次听说给生活照加水印的.没办法,谁让我们和他们有合作项目 ...

  7. 解决java压缩图片内存溢出问题

    解决java压缩图片内存溢出问题 import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutput ...

  8. php根据背景图片深浅加水印

    最近做到一个项目要实现这样一个功能, 根据上传图片的主色调, 在图片上加水印或文字. 比如上传的图片颜色较深,文字的颜色用浅色标识,如果图片颜色较浅, 则文字颜色用深色标识. 解决方法是: 先确定要加 ...

  9. 图片如何加水印?几个步骤教你加水印

    现在很多人都喜欢在各种平台上分享自己的照片吧,不管是一些制作出来的媒体图片还是精致的人像图片,相信很多小伙伴都会这样.但同时也有一些让人担心的问题,怕有一些人会随意转发图片,或者盗图冒充本人.其实解决 ...

最新文章

  1. 手把手教你使用 YOLOV5 训练目标检测模型
  2. !aspxpages(即!dumphttpcontext)命令输出的解释
  3. windows平台下vlc编译之一:编译环境构建(2008.12.03更新)
  4. luogu_1002 过河卒
  5. 开发安卓app游戏_电竞直播APP软件定制开发,游戏直播APP开发方案
  6. centos7 时间设置
  7. [转]IntelliJ IDEA 2019.3正式发布,给我们带来哪些新特性?
  8. oracle lms进程 内存,Oracle RAC 内存融合(Cache Fusion)
  9. 1200可以读取modbus tcp_S7-1200 作 MODBUS TCP服务器
  10. c语言编程经典实例利润,C语言经典编程实例100题解答
  11. 面试官:原生GAN都没搞清楚,自己走还是我送你
  12. 综合场景搞清楚同步 异步 阻塞 非阻塞
  13. unity 序列帧动画 UGUI GPU版
  14. win10系统电脑分辨率异常解决办法
  15. perl查看包安装路径
  16. STOP!运营小程序,不知道这4种方法,是不可能实现小程序裂变的
  17. 苹果电脑如何设置开启远程控制?
  18. 迭代重建算法中投影矩阵的计算
  19. 毕设论文格式整理及常见问题解决
  20. 2020中国高校计算机大赛·华为云大数据挑战赛-数据分析(一)

热门文章

  1. 什么相片可以两张弄成一张_ps怎么把两张图片合成一张
  2. 大数据工具和数据库区别和关联
  3. Java 基础 Collection集合
  4. 联想win10触摸板失灵
  5. CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式
  6. 测试不同体重体型软件样子的,为什么有的人身高、体重相同,体型却不一样?这是体脂率在作祟...
  7. 坐标反算计算起始方位角_谁会坐标正算反算的公式,怎么计算两个坐标的方位角...
  8. [敏捷开发培训] 构建Agile MVP
  9. 文本分类模型中的“蒸”功夫
  10. sequencer和driver