Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从JPEG图像无损创建金字塔平铺TIFF_Java_Compression_Jpeg_Tiff_Lossless - Fatal编程技术网

Java 如何从JPEG图像无损创建金字塔平铺TIFF

Java 如何从JPEG图像无损创建金字塔平铺TIFF,java,compression,jpeg,tiff,lossless,Java,Compression,Jpeg,Tiff,Lossless,我需要创建平铺金字塔TIFF文件,使用JPEG压缩平铺,使用无损JPEG操作(即在jpegtran中裁剪)从大型JPEG图像创建平铺金字塔TIFF文件。有没有工具或java代码来执行这样的操作 目前,我正在使用Java代码创建平铺金字塔TIFF,但它是以有损的方式进行的: public static void writeTiff(RenderedOp src, File dstFile, float jpegQuality, int tileSize, int pyramid, String i

我需要创建平铺金字塔TIFF文件,使用JPEG压缩平铺,使用无损JPEG操作(即在jpegtran中裁剪)从大型JPEG图像创建平铺金字塔TIFF文件。有没有工具或java代码来执行这样的操作

目前,我正在使用Java代码创建平铺金字塔TIFF,但它是以有损的方式进行的:

public static void writeTiff(RenderedOp src, File dstFile, float jpegQuality, int tileSize, int pyramid, String interpolation) throws IOException {
    dstFile.getParentFile().mkdirs();
    TIFFImageWriterSpi imageWriterSpi = new TIFFImageWriterSpi();
    TIFFImageWriter imageWriter = (TIFFImageWriter)imageWriterSpi.createWriterInstance();
    ImageOutputStream out = new FileImageOutputStream(dstFile);
    try {
        imageWriter.setOutput(out);
        imageWriter.prepareWriteSequence(null);
        BufferedImage img = null;
        for(int i=0; i<pyramid; i++) {
            img = img==null ? src.getAsBufferedImage() : JAIUtils.scale(img, 0.5F, interpolation).getAsBufferedImage();
            TIFFImageWriteParam imageWriteParam = (TIFFImageWriteParam)imageWriter.getDefaultWriteParam();
            if (tileSize>0 && (img.getWidth()>tileSize || img.getHeight()>tileSize)) {
                imageWriteParam.setTilingMode(ImageWriteParam.MODE_EXPLICIT);
                imageWriteParam.setTiling(tileSize, tileSize, 0, 0);
            }
            if (jpegQuality > 0) {
                imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT );
                imageWriteParam.setCompressionType("JPEG");
                imageWriteParam.setCompressionQuality(jpegQuality);
            }
            imageWriter.writeToSequence(new IIOImage(img, null, null), imageWriteParam );
        }
        imageWriter.endWriteSequence();
    } finally {
        out.close();
    }
}
public static void writeTiff(renderop src、File dstFile、float jpegQuality、int tileSize、int棱锥体、字符串插值)引发IOException{
dstFile.getParentFile().mkdirs();
TIFFImageWriterSpi imageWriterSpi=新的TIFFImageWriterSpi();
TIFFImageWriter imageWriter=(TIFFImageWriter)imageWriterSpi.createWriterInstance();
ImageOutputStream out=新文件ImageOutputStream(dstFile);
试一试{
imageWriter.setOutput(输出);
imageWriter.prepareWriteSequence(空);
BuffereImage img=null;
对于(inti=0;i0&(img.getWidth()>tileSize | | img.getHeight()>tileSize)){
imageWriteParam.setTilingMode(imageWriteParam.MODE_显式);
设置平铺(tileSize,tileSize,0,0);
}
如果(JPEG质量>0){
imageWriteParam.setCompressionMode(imageWriteParam.MODE_显式);
设置压缩类型(“JPEG”);
设置压缩质量(JPEG质量);
}
imageWriter.writeToSequence(新的IIOImage(img,null,null),imageWriteParam);
}
imageWriter.endWriteSequence();
}最后{
out.close();
}
}

在命令行中工作得很好,但我看到它也有一个功能。

谢谢你的提示,我会查看它的