java常用的几个图片处理工具对Tiff文件的支持
ImageMagick
官网 https://imagemagick.org/, 支持多种格式。命令行工具很适合调试。功能很强大. 还有一款工具GraphicsMagick 是从ImageMagick的基础上研发出来的。
OpenCV
官网 https://opencv.org/ , github地址https://github.com/opencv/opencv,非常活跃的一个开源工具,原来免费的教程,现在已经开始包装成视频,进行收费了,我买了教程,看了下,和以前官网看过的文字版教程没多大差别。github关注已经达到了72.3k。
ImageJ
官网 https://imagej.net/ij/
ImageJ is open source software for processing and analyzing scientific images.
基于ImageJ已经又研发了ImageJ2(目前github关注量1k)和Fiji的产品。
// Open the TIFF image
ImagePlus imagePlus = new ImagePlus(f);// Get the image processor
ImageProcessor imageProcessor = imagePlus.getProcessor();// Add text to the image
int x = 0; // X-coordinate of text
int y = 0; // Y-coordinate of textString textToAdd = "These three lines of\ntext will be overlayed on\nthe current image";Font font = new Font("SansSerif", Font.PLAIN, 56);
imageProcessor.setFont(font);
imageProcessor.setColor(Color.RED);
imageProcessor.drawString(textToAdd, x, y); // Draw the text// Display the modified image (optional)
// imagePlus.show();// Save the modified image
ImagePlus outputImage = new ImagePlus("Modified Image", imageProcessor);
IJ.saveAs(outputImage,"jpeg", f31);
IJ.saveAsTiff(outputImage, f41);
final ImagePlus imagePlus1 = IJ.openImage(f41);
IJ.save(imagePlus1, fpng);
commons-imaging
Apache维护的产品,目前github关注量381
final File file = new File(f);
final BufferedImage overlay = Imaging.getBufferedImage(file);
// Add text to the image
int x = 0; // X-coordinate of text
int y = 0; // Y-coordinate of textFont font = new Font("SansSerif", Font.PLAIN, 56);
String textToAdd = "These three lines of\ntext will be overlayed on\nthe current image";
addTextToImage(overlay, textToAdd, x, y, Color.RED, font);ImageIO.write(overlay, "JPEG", new File(fa1));
// ImageIO.write(overlay, "TIFF", new File(fa2));
saveImageWithText(overlay, fa2);
Imaging.writeImage(overlay, Files.newOutputStream(Paths.get(fa4png)), ImageFormats.PNG);
// Method to add text to the imageprivate static void addTextToImage(BufferedImage image, String text, int x, int y, Color color, Font font) {Graphics2D g2d = image.createGraphics();g2d.setColor(color);g2d.setFont(font);
// g2d.drawString(text, x, y);drawString(g2d, text, x, y);g2d.dispose();}private static void drawString(Graphics g, String text, int x, int y) {for (String line : text.split("\n"))g.drawString(line, x, y += g.getFontMetrics().getHeight());}// // Method to save the modified image with text using Common Imagingprivate static void saveImageWithText(BufferedImage image, String outputPath) throws IOException, ImageWriteException {// Create a new instance of ImageWriteParam for TIFF formatfinal TiffImagingParameters params = new TiffImagingParameters();params.setCompression(TiffConstants.TIFF_COMPRESSION_UNCOMPRESSED);// Write the BufferedImage with text to a TIFF file
// Imaging.writeImage(image, new File(outputPath), ImageFormat.IMAGE_FORMAT_TIFF, params);new TiffImageParser().writeImage(image, Files.newOutputStream(Paths.get(outputPath)), params);}
TwelveMonkeys
目前github关注量1.7k
JDeli 是一个付费软件
如下是测试结果
photoshop可以看到通道增加了专色通道。

| ImageMagick | opencv | imagej | commons-imaging | TwelveMonkeys | JDeli(付费软件) | |
|---|---|---|---|---|---|---|
| 带有2个专色通道的tiff图片 | 不支持 | 不支持 | 支持 | 支持 | 不支持 | 支持 |
| 将文字写入到图片中 | / | / | 支持 | 支持 | ||
| 文字写入保存为jpg格式 | / | / | 写入红色的字体变成了黑红 | 写入红色的字体变成了黑红 | ||
| 文字写入保存为tiff格式 | / | / | 写入红色的字体正常 | 写入红色的字体正常 | 写入红色的字体正常 | |
| 支持Tiff格式alpha通道 | / | / | 不支持 | 不支持 | 不支持 | 不支持 |
相关文章:
java常用的几个图片处理工具对Tiff文件的支持
ImageMagick 官网 https://imagemagick.org/, 支持多种格式。命令行工具很适合调试。功能很强大. 还有一款工具GraphicsMagick 是从ImageMagick的基础上研发出来的。 OpenCV 官网 https://opencv.org/ , github地址https://github.com/opencv/opencv&…...
SQL必知会(二)-SQL查询篇(11)-联结表
第12课、联结表 联结表 使用联结:之前的 SELECT 查询某些列,只是针对一张表进行检索的。(即 FROM 表名)。但是如果用户想要使用 SELECT 对存储在不同表中的某些列时,则需要使用联结表的方式来实现。 例子中有建立两个…...
多模态大一统:开启全模态LLM和通用AI时代的大门
多模态大一统:开启全模态LLM和通用AI时代的大门 1. 目前多模态实现的方法1.1 单独训练各领域模型1.2 多任务学习1.3 集成多模态模型1.4 通用多模态模型2. 多模态统一难点2.1 数据集对齐和融合2.2 大规模计算资源需求2.3 各领域特性的兼容性2.4 可解释性和泛化能力3. 全模态的好…...
Alibaba Nacos注册中心实战
为什么需要注册中心 思考:网络请求,如果服务提供者发生变动,服务调用者如何感知服务提供者的ip和端口变化? // 微服务之间通过RestTemplate调用,ip:port写死,如果ip或者port变化呢? String ur…...
京东数据采集与挖掘(京东大数据):2023年10月京东冰箱品牌销售排行榜
鲸参谋监测的京东平台10月份冰箱市场销售数据已出炉! 10月份,冰箱市场的销售额有小幅上涨。鲸参谋数据显示,在京东平台上,今年10月冰箱市场的销量为94万,销售额将近23亿,同比增长超过1%。从价格上看&#x…...
某事业单位转型二类后绩效项目成功案例纪实
——事业单位从公益一类转向二类之后,如何通过绩效考核提高人员积极性 【客户行业】事业单位 【问题类型】绩效管理 【客户背景】 某国家级博物馆是由当地ZF与自然资源局共建共管的事业单位,是一家综合性较强的博物馆,入选过全国热搜博物…...
MySQL 和 SQL Server之间的数据迁移方法
目录 MySQL导入SQL Server 使用 SQL Server Management Studio (SSMS) 导入导出向导: 使用 SQL Server Integration Services (SSIS): SQL Server 导入 MySQL 使用 SQL Server Management Studio (SSMS) 导出数据: 使用 MySQL Workbench…...
单元测试实战(五)普通类的测试
为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试 单元测试实战&am…...
js 迭代器iterator 和 生成器Generator 10
✌ 文章目录 一、迭代器 iterator二、使用步骤1.引入库2.读入数据 总结 一、迭代器 iterator 迭代器是帮助我们对某个数据结构进行遍历的对象 迭代器:是一个对象,帮助我们对某个数据结构进行遍历 迭代器要符合迭代器协议,必须要有一个特定的n…...
100套Axure RP大数据可视化大屏模板及通用组件库
106套Axure RP大数据可视化大屏模板包括了多种实用美观的可视化组件库及行业模板库,行业模板涵盖:金融、教育、医疗、政府、交通、制造等多个行业提供设计参考。 随着大数据的发展,可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再…...
【OpenGauss源码学习 —— 执行算子(Append算子)】
执行算子(Append算子) Append 算子ExecInitAppend 函数exec_append_initialize_next 函数ExecAppend 函数ExecEndAppend 函数ExecReScanAppend 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和…...
Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)
基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…...
Vue第1天:特性概览
文章目录 Vue.js 简介 Vue的特性 如何使用Vue 安装Vue 通过CDN引入 使用npm 创建Vue实例 结语 Vue.js 简介 Vue.js(通常简称为Vue)是一款流行的JavaScript框架,专注于构建用户界面。它的设计灵感来自于现代的JavaScript框架…...
C++语法基础知识面经汇总
背景:汇总了网上C常考的基础知识,方便复习 1,static关键字 static可以用于成员变量,或者成员函数。存储空间在静态存储区(编译器会将其初始化为0,对应的存储空间直到程序执行结束才会释放)&…...
AM@幂级数性质@幂级数和函数求解
文章目录 幂级数性质四则运算性质分析性质求解和函数例例 幂级数性质 和多项式有相似的性质本文介绍用幂级数的性质求解幂级数和函数的两个例子 四则运算性质 若幂级数 ∑ n 0 ∞ a n x n \sum_{n0}^{\infin}a_{n}x^{n} ∑n0∞anxn(1)的收敛半径为 R 1 R_1 R1,和函数为…...
PHP低版本安全问题
目录 1、PHP弱类型问题 1.1 MD5、 SHA1 弱比较问题 1.2 数组 0 1)函数无法处理数组,返回0 2)strcmp 2、特殊字符串导致的问题 2.1 "ffifdyop" 与 md5(string,raw) 2.2 ereg函数漏洞:00 截断 3、正则匹配问…...
结构体——C语言初阶
一.结构体的声明: (1)结构的基础知识: 结构体是一种构造数据类型把不同类型的数据组合成一个整体结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量需要注意的是,结构体是一种…...
基于django电影推荐系统
基于django电影推荐系统 摘要 该Django电影推荐系统是一个简单而基础的框架,旨在展示系统的基本组件。系统包括两个主要模型,即Movie和Rating,用于存储电影信息和用户评分。视图层包括展示电影列表和电影详情的功能,使用模板进行页…...
【问题处理】WPS提示不能启动此对象的源应用程序如何处理?
哈喽,大家好,我是雷工! 最近在用WPS打开word文件中,插入的Excel附件时,无法打开,提示:“不能启动此对象的源应用程序”。 经过上网查找处理办法,尝试解决,现将解决过程记…...
UE 程序化网格 计算横截面
首先在构造函数内加上程序化网格,然后复制网格体到程序化网格组件上,将Static Mesh(类型StaticMeshActor)的静态网格体组件给到程序化网格体上 然后把StaticMesh(类型为StaticMeshActor)Instance暴漏出去 …...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
