This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.File; | |
import java.io.FileOutputStream; | |
import java.io.IOException; | |
import java.awt.image.RenderedImage; | |
import com.sun.image.codec.jpeg.JPEGCodec; | |
import com.sun.image.codec.jpeg.JPEGImageEncoder; | |
import com.sun.media.jai.codec.SeekableStream; | |
import com.sun.media.jai.codec.FileSeekableStream; | |
import com.sun.media.jai.codec.TIFFDecodeParam; | |
import com.sun.media.jai.codec.ImageDecoder; | |
import com.sun.media.jai.codec.ImageCodec; | |
public class TiffUtils { | |
public static void TiffToJpg(File inFile, String otPath) throws IOException | |
{ | |
SeekableStream s = new FileSeekableStream(inFile); | |
TIFFDecodeParam param = null; | |
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, param); | |
RenderedImage op = dec.decodeAsRenderedImage(0); | |
FileOutputStream fos = new FileOutputStream(otPath); | |
JPEGEncodeParam jpgparam = new JPEGEncodeParam(); | |
jpgparam.setQuality(67); | |
ImageEncoder en = ImageCodec.createImageEncoder("jpeg", fos, jpgparam); | |
en.encode(op); | |
fos.flush(); | |
fos.close(); | |
} | |
public static void JPEGtoTIFF(String InputimgFile, String OutputFileName) throws Exception { | |
File imgFile = new File(InputimgFile); | |
InputStream fis = new BufferedInputStream(new FileInputStream(imgFile)); | |
JPEGImageReaderSpi spi = new JPEGImageReaderSpi(); | |
javax.imageio.ImageReader rdr = spi.createReaderInstance(); | |
ImageInputStream iis = ImageIO.createImageInputStream(fis); | |
rdr.setInput(iis, true); | |
JPEGImageReadParam rdparam = new JPEGImageReadParam(); | |
BufferedImage bi = rdr.read(0, rdparam); | |
TIFFImageWriterSpi tiffspi = new TIFFImageWriterSpi(); | |
javax.imageio.ImageWriter wtr = tiffspi.createWriterInstance(); | |
File newTIFF = new File(OutputFileName + ".tif"); | |
ImageOutputStream ios = ImageIO.createImageOutputStream(newTIFF); | |
wtr.setOutput(ios); | |
TIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.US); | |
// ImageWriteParam tiffWriteParam = wtr.getDefaultWriteParam(); | |
String[] CompTypes = tiffWriteParam.getCompressionTypes(); | |
for (int j = 0; j < CompTypes.length; j++) | |
System.out.println(CompTypes[j]); | |
tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); | |
tiffWriteParam.setCompressionType("LZW"); | |
tiffWriteParam.setCompressionQuality(0.5f); | |
try { | |
int i = 0; | |
IIOMetadata iioImageMetadata = rdr.getImageMetadata(i); | |
int imageHeight = rdr.getHeight(i); | |
int imageWidth = rdr.getWidth(i); | |
tiffWriteParam.setTilingMode(ImageWriteParam.MODE_EXPLICIT); | |
tiffWriteParam.setTiling(imageWidth, imageHeight, 0, 0); | |
BufferedImage buffimg = new BufferedImage(imageWidth, imageHeight, bi.TYPE_BYTE_BINARY); | |
IIOImage image = new IIOImage(bi, null, iioImageMetadata); | |
try { | |
wtr.write(null, image, tiffWriteParam); | |
} catch (Exception e) { | |
System.out.println(e.toString()); | |
} | |
wtr.dispose(); | |
} catch (IndexOutOfBoundsException e) { | |
rdr.dispose(); | |
} | |
// Done writing all images for this image | |
rdr.dispose(); | |
} | |
public static void main(String[] args) throws Exception { | |
TiffUtils.TiffToJpg("c:/users/public/temp/test.tif","c:/users/public/temp/test.jpg"); | |
} | |
} |
No comments:
Post a Comment