java image png tiff image-conversion

¿Cómo convierto un TIF a PNG en Java?



image tiff (5)

Descargue el kit de desarrollo de software JIMI jimi1_0.zip y establezca JimiProClasses.zip en su classpath

http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#7259-jimi_sdk-1.0-oth-JPR

JIMI es una biblioteca de imágenes java más antigua, pero es fácil de usar y no hay un código dependiente de la plataforma (no hay ejecutables nativos, puede usarlo como un contenedor estándar)

import java.awt.Image; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import com.sun.jimi.core.Jimi; public class JIMIImageConverter { public static byte[] convert(byte[] inBytes, String inMimeType, String outMimeType) throws Exception{ Image rawImage = Jimi.getImage(new ByteArrayInputStream(inBytes), inMimeType); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Jimi.putImage(outMimeType, rawImage, outputStream); return outputStream.toByteArray(); } }

donde inMimeType y outMimeType son formatos de gráficos mimetypes

En Java, ¿cuál es la mejor manera de convertir un archivo TIF a PNG?

La simplicidad es preferible, pero si la forma más sencilla es usar una biblioteca de terceros, entonces consideraría esa solución.



Primero, instale JAI . Luego instale JAI / ImageIO . Entonces hazlo

public static void main(final String[] args) throws Exception { final BufferedImage tif = ImageIO.read(new File("test.tif")); ImageIO.write(tif, "png", new File("test.png")); }


Utilice las bibliotecas de imageMagic Java como im4java , su rendimiento y calidad es mucho mejor que JAI

por ejemplo:

import org.im4java.core.ConvertCmd; import org.im4java.core.IMOperation; public static void convertTifToPng(File inputImage, File outputImage){ IMOperation op = new IMOperation(); op.addImage(); //place holder for input file op.addImage(); //place holder for output file ConvertCmd convert = new ConvertCmd(); convert.run(op, new Object[]{inputImage.getAbsolutePath(), outputImage.getAbsolutePath()}); }

la dependencia de maven para im4java es

<dependency> <groupId>im4java</groupId> <artifactId>im4java</artifactId> <version>0.98.0</version> </dependency>


tal vez puedas usar este código, funciona para mí

import java.awt.Color; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.awt.image.renderable.ParameterBlock; import java.io.File; import java.io.IOException; import javax.media.jai.JAI; import javax.media.jai.RenderedOp; import com.sun.media.jai.codec.FileSeekableStream; import com.sun.media.jai.codec.ImageCodec; import com.sun.media.jai.codec.ImageDecoder; import com.sun.media.jai.codec.SeekableStream; public class ImageConvert { public static RenderedImage[] readMultiPageTiff(String fileName)throws IOException{ File file = new File(fileName); SeekableStream seekableStream = new FileSeekableStream(file); ImageDecoder decoder = ImageCodec.createImageDecoder("tiff", seekableStream, null); int numPages = decoder.getNumPages(); RenderedImage image[]= new RenderedImage[numPages]; int count = 0; for(int i=0;i<decoder.getNumPages();i++){ image[i] = decoder.decodeAsRenderedImage(i); count++; } String newFolderName; String s3 = fileName; String [] temp = null; temp = s3.split("//."); int j; j = 0; do{ newFolderName = temp[j]; String spoonFeeding = newFolderName; File f = new File(spoonFeeding); f.mkdirs(); j++; }while (j<1); for (int i = 0; i < count; i++) { RenderedImage page = decoder.decodeAsRenderedImage(i); File fileObj = new File(newFolderName+"/" + (i+1) + ".png"); System.out.println("Saving " + fileObj.getCanonicalPath()); ParameterBlock parBlock = new ParameterBlock(); parBlock.addSource(page); parBlock.add(fileObj.toString()); parBlock.add("png"); RenderedOp renderedOp = JAI.create("filestore",parBlock); renderedOp.dispose(); } return image; } }