• 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 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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    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 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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    
        // 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);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    TwelveMonkeys

    目前github关注量1.7k

    JDeli 是一个付费软件

    如下是测试结果

    photoshop可以看到通道增加了专色通道。
    在这里插入图片描述

    ImageMagickopencvimagejcommons-imagingTwelveMonkeysJDeli(付费软件)
    带有2个专色通道的tiff图片不支持不支持支持支持不支持支持
    将文字写入到图片中//支持支持
    文字写入保存为jpg格式//写入红色的字体变成了黑红写入红色的字体变成了黑红
    文字写入保存为tiff格式//写入红色的字体正常写入红色的字体正常写入红色的字体正常
    支持Tiff格式alpha通道//不支持不支持不支持不支持
  • 相关阅读:
    input框输入中文时,输入未完成触发事件。Vue中文输入法不触发input事件?
    1.怎么显示页码?
    1024程序节特辑:一文读懂小程序支付流程
    逻辑回归Logistic
    三个线程顺序打印ABC?我有十二种做法,彻底掌握多线程同步通信机制
    载誉而归,重磅发布!润和软件亮相2022开放原子全球开源峰会
    幻读是什么,幻读有什么问题
    5.无霍尔BLDC转子预定位及同步加速
    pycharm中运行jupyter notebook
    YoloV8改进策略:将FasterNet与YoloV8深度融合,打造更快更强的检测网络
  • 原文地址:https://blog.csdn.net/u012386311/article/details/134425864