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的产品。

java 复制代码
// 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 text

String   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

java 复制代码
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 text

Font 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);
java 复制代码
    // Method to add text to the image
    private 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 Imaging
    private static void saveImageWithText(BufferedImage image, String outputPath) throws IOException, ImageWriteException {
        // Create a new instance of ImageWriteParam for TIFF format
        final 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通道 / / 不支持 不支持 不支持 不支持
相关推荐
Li_RuiQi9 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
迪菲赫尔曼10 小时前
【基础篇 02】文件、文件夹和路径:先把学习资料放对地方
yolo·计算机视觉·论文·教程·ultralyt
深圳安锐科技有限公司12 小时前
从成像尺度到亚像素解算:变焦视觉位移监测如何让远近断面都稳
图像处理·人工智能·深度学习·算法·计算机视觉·系统架构·结构健康监测
双翌视觉17 小时前
.机器视觉国产化方案梳理:对位算法、AI 检测平台与精密测量仪器技术架构
人工智能·计算机视觉·视觉检测·机器视觉·工业自动化·视觉对位系统·ai 视觉检测
怎么全是重名17 小时前
PatchCore
人工智能·深度学习·计算机视觉·异常检测
W_3260018 小时前
Python 图像处理第二十八章|OpenCV 形态学操作进阶:腐蚀、膨胀、开运算、闭运算、梯度、顶帽黑帽
图像处理·人工智能·python·opencv·计算机视觉
美狐美颜SDK开放平台18 小时前
视频美颜SDK如何实现动态贴纸跟随?人脸追踪技术解析
android·人工智能·计算机视觉·音视频·直播美颜sdk
拜小白18 小时前
【论文解读】PanoRoom:从球面到3D布局
深度学习·计算机视觉·全景图
拜小白18 小时前
【论文解读】(JLDNet) Joint 3D Layout and Depth:一张全景图同时算出房间骨架和像素深度
深度学习·计算机视觉·全景图
拜小白20 小时前
【论文解读】Pano Popups:用平面感知网络做室内3D重建
深度学习·计算机视觉·全景图