`
beyond429
  • 浏览: 96043 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JAI处理TIFF格式图片

    博客分类:
  • java
阅读更多

懒得多说,直接代码了。。。。
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.ImageOutputStream;

import com.sun.media.imageioimpl.plugins.tiff.TIFFImageWriterSpi;

public class TiffTest {

public static void main(String[] args) throws IOException {
BufferedImage bi = ImageIO.read(new File("D:/images/00.jpg"));// 通过imageio将图像载入
int h = bi.getHeight();// 获取图像的高
int w = bi.getWidth();// 获取图像的宽
int[][] gray = new int[w][h];
for (int x = 0; x  SW) {
int max = new Color(255, 255, 255).getRGB();
nbi.setRGB(x, y, max);
} else {
int min = new Color(0, 0, 0).getRGB();
nbi.setRGB(x, y, min);
}
}
}

TIFFImageWriterSpi tiffws = new TIFFImageWriterSpi();
ImageWriter writer = tiffws.createWriterInstance();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("CCITT T.6");
param.setCompressionQuality(0f);
File outFile = new File("D:/images/二值化后_有压缩.tiff");
ImageOutputStream ios = ImageIO.createImageOutputStream(outFile);
writer.setOutput(ios);
writer.write(null, new IIOImage(nbi, null, null), param);

}

public static int getGray(int rgb) {
Color c = new Color(rgb);
int r = c.getRed();
int g = c.getGreen();
int b = c.getBlue();
int top = (r + g + b) / 3;
return (int) (top);
}

/**
* 自己加周围8个灰度值再除以9,算出其相对灰度值
* @param gray
* @param x
* @param y
* @param w
* @param h
* @return
*/
public static int getAverageColor(int[][] gray, int x, int y, int w, int h) {
int rs = gray[x][y] + (x == 0 ? 255 : gray[x - 1][y]) + (x == 0 || y == 0 ? 255 : gray[x - 1][y - 1])
+ (x == 0 || y == h - 1 ? 255 : gray[x - 1][y + 1]) + (y == 0 ? 255 : gray[x][y - 1])
+ (y == h - 1 ? 255 : gray[x][y + 1]) + (x == w - 1 ? 255 : gray[x + 1][y])
+ (x == w - 1 || y == 0 ? 255 : gray[x + 1][y - 1])
+ (x == w - 1 || y == h - 1 ? 255 : gray[x + 1][y + 1]);
return rs / 9;
}
/**
* 转换JPG图片文件格式为TIFF
* @param srcFile File 要转换格式的原文件
* @param resFile File 转换格式后的目标文件
* @throws IOException 抛出IO异常
*/
public static InputStream convertImageToTIFF() throws IOException {
long a = System.currentTimeMillis();

InputStream fis = pressImage();
ByteArrayOutputStream fos = new ByteArrayOutputStream();

TIFFEncodeParam encodeParam = new TIFFEncodeParam();
encodeParam.setCompression(TIFFEncodeParam.COMPRESSION_DEFLATE);

JPEGDecodeParam decodeParam = new JPEGDecodeParam();
ImageDecoder decoder = ImageCodec.createImageDecoder("JPEG", fis, decodeParam);
RenderedImage image = decoder.decodeAsRenderedImage();
ImageEncoder encoder = ImageCodec.createImageEncoder("TIFF", fos, encodeParam);
encoder.encode(image);
InputStream is = new ByteArrayInputStream(fos.toByteArray());

System.out.println("convertImageToTIFF  --  "+(System.currentTimeMillis() - a));
return is;
}

/**
* 转换ImageOutputStream 为byte[] */
public static byte[] getBytes(ImageOutputStream ios) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream(255);
long counter = 0;
try {
ios.seek(0);
} catch (IOException e1) {
e1.printStackTrace();
}

while (true) {
try {
bos.write(ios.readByte());
counter++;
} catch (EOFException e) {
System.out.println("End of Image Stream");
break;
} catch (IOException e) {
System.out.println("Error processing the Image Stream");
break;
}
}
byte[] retValue = bos.toByteArray();
return retValue;
}
/**
* 合并图片 */

public final static InputStream pressImage() {
try {
long a = System.currentTimeMillis();
int x = 30;
int y = 50;
float alpha = 1f;
BufferedImage bufferedImage = createBufferedImage Graphics2D g = bufferedImage.createGraphics();

int width_1 = waterImage.getWidth(null);
int height_1 = waterImage.getHeight(null);
g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));

g.drawImage(waterImage, x, y, width_1 +100, height_1+100, null); // 水印文件结束

g.drawImage(waterImage, x+600, y, width_1 +100, height_1+100, null); // 水印文件结束

g.drawImage(waterImage, x+1100, y, width_1 +100, height_1+100, null); // 水印文件结束

g.drawImage(waterImage, x, y+600, width_1 +100, height_1+100, null); // 水印文件结束

g.drawImage(waterImage, x+600, y+600, width_1 +100, height_1+100, null); // 水印文件结束

g.dispose();

ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, os);
//File f = new File("D:/workspaceFlex/FlexTiff/src/assets/images/12.jpg");
//ImageIO.write(bufferedImage, PICTRUE_FORMATE_JPG, f);
InputStream is = new ByteArrayInputStream(os.toByteArray());

System.out.println("pressImage  --  "+(System.currentTimeMillis() - a));
return is;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private static BufferedImage createBufferedImage() {
    BufferedImage bimg = null;
try {
bimg = ImageIO.read(new File("D:/workspaceFlex/FlexTiff/src/assets/images/570119458887_20120907210013_b.tif"));
} catch (IOException e) {
e.printStackTrace();
}
    return bimg;
}
private final static Image waterImage = createBufferedImage();
}

 

分享到:
评论

相关推荐

    JAI处理TIFF,图片转TIFF

    ### JAI处理TIFF, 图片转TIFF 在Java编程环境中,对于图像处理的需求非常常见,特别是当涉及到格式转换、图像压缩等高级操作时。本文将深入探讨如何使用Java Advanced Imaging (JAI) 工具包来处理TIFF文件,并实现...

    java处理tiff格式图片,转为其他类型

    总的来说,处理Tiff格式的图片在Java中主要依赖于像JAI这样的第三方库,通过这些库我们可以轻松地读取、转换和保存Tiff图像,满足不同场景的需求。当然,随着技术的发展,还有更多的图像处理库涌现出来,为开发者...

    JAI - 将图片转为TIF格式的依赖包

    总之,JAI是一个强大的图像处理工具,特别适合处理复杂的图像转换任务,如将JPG、PNG和BMP图片转换为TIFF格式。通过使用JAI Core、Image I/O和Codec库,开发人员可以构建可靠且高效的图像处理程序,满足各种专业应用...

    jar包 图片处理 jai_codec、jai_core、mlibwrapper_jai

    Java开发中的图片处理是一个重要的领域,特别是在构建图形用户界面或者进行图像分析的项目中。`jai_codec.jar`, `jai_core.jar`, 和 `mlibwrapper_jai.jar` 是Java Advanced Imaging (JAI) 库的一部分,这个库专门...

    jai 图片处理 jai_codec.jar、jai_core.jar、mlibwrapper_jai.jar

    标题提到的"jai 图片处理 jai_codec.jar、jai_core.jar、mlibwrapper_jai.jar"是JAI的核心组件,用于支持特定的图像处理任务。 1. **jai_codec.jar**: 这个JAR文件包含了JAI的编解码器组件,用于处理多种图像格式,...

    java互转jpg和raw格式图片

    本篇文章将详细探讨如何利用Java与JAI-ImageIO库进行JPEG(jpg)与RAW格式图片之间的转换。 首先,让我们了解这两种图像格式。JPEG(Joint Photographic Experts Group)是一种广泛使用的有损压缩图像格式,适用于...

    java图片处理JAI 的jar

    Java 图片处理库Java Advanced Imaging (JAI) 是一个强大的工具,用于在Java环境中进行复杂的图像操作和处理。这个库提供了丰富的功能,包括但不限于图片的读取、写入、旋转、缩放、颜色空间转换以及各种滤镜应用。...

    用java把2个tiff或图片合并成一个tiff或图片

    2. **TIFF格式**:TIFF是一种灵活的位图格式,广泛用于专业图像处理,因为它支持多种压缩方式和色彩模式。在Java中处理TIFF图像,可能需要第三方库,如Apache Commons Imaging(旧称Apache Sanselan)或JAI(Java ...

    jai_codec-1.1.3.jar 和 jai_core.jar 核心包

    在给定的压缩包中,有两个核心的JAR文件:`jai_codec-1.1.3.jar` 和 `jai_core.jar`,它们对于处理特定格式的图像,特别是 TIFF 图片到 JPG 的转换至关重要。 1. **jai_codec-1.1.3.jar**: 这个JAR文件包含了Java...

    关于JAI的两个JAR文件jai_codec.jar和jai_core.jar的最新版本

    `jai_codec.jar`使得Java程序能够读取和写入这些复杂格式的TIFF图片,这对于进行图像处理和转换任务至关重要。 `jai_core.jar`则是JAI的核心库,包含了基本的图像处理功能和算法,比如几何变换、滤波、色彩空间转换...

    tif转jpg。正版jai-core,jai-codec。附代码以及tif图片供测试。

    总之,`jai-core`和`jai-codec`库是Java中处理图像转换的强大工具,特别是对于需要处理多种格式和进行复杂图像操作的项目。通过理解这两个库的使用,开发者可以更有效地进行图像处理,例如将高质量的TIFF图像转换为...

    用JAI扩展Java的图像处理能力 - 中文JAVA技术网

    JAI支持多种图像格式,如JPEG、TIFF、PNG等,并且能够进行跨平台操作。它通过一系列可组合的操作符来实现复杂的图像处理任务,这些操作符可以串联起来形成一个处理流水线。 二、JAI的核心概念 1. **操作符...

    jai范列

    JAI支持多种图像格式,如JPEG、PNG、BMP、TIFF等,这使得它在处理各种来源的图像时具有很高的灵活性。 在“jai demo的实例代码”中,我们可以期待看到以下几个关键知识点: 1. **图像读取**:JAI提供了`RenderedOp...

    jai_codec.jar

    JAI工具,操作图片资源,java通过这个工具能将cmyk的bufferedImage生成tiff格式

    com.sun.media.jai等文件转换jar

    JAI 中的 Image I/O Tools,支持更多图片类型,例如JPEG-LS, JPEG2000, 和 TIFF。 主页:https://jai-imageio.dev.java.net/。JAI 是一个关于图像处理的框架,很庞大, 其中仅仅jai-imageio是关于图像I/O的,其他的...

    多图转换成TIFF文件需要的jar包

    TIFF格式支持多种压缩算法,如无压缩、LZW、JPEG等,这个库可以帮助开发者选择合适的压缩方法,并将多张图片以TIFF格式保存。 在实际使用中,通过导入这两个JAR包,开发者可以编写Java代码来实现以下功能: - **...

    TIFF多页合并

    在JAVA中处理TIFF文件,特别是进行多页合并的操作,需要借助特定的库,比如Apache Commons Imaging(以前称为Apache Sanselan)或者JAI (Java Advanced Imaging)。以下是一个基本的步骤概述: 1. **导入必要的库**...

    jai_imageio-1.1-alpha.jar和swingx-1.0.jar

    - **广泛的图像格式支持**:能够处理包括JPEG, TIFF, PNG, BMP, GIF等多种图像格式。 - **图像操作**:提供了一系列的图像处理操作,如旋转、缩放、裁剪、颜色空间转换等。 - **流式处理**:允许对大型图像进行高效...

    jai_codec-1.1.3.jar

    在Java编程环境中,JAI Codec库是处理图像文件格式的核心组件。它包含了对多种常见图像格式如JPEG、TIFF、PNG、BMP等的解码器和编码器。通过这个库,开发者可以轻松地读取、修改和保存这些格式的图像文件,极大地...

    jai_imageio-1.1-alpha和swingx-1.0图片处理两个jar包

    `jai_imageio-1.1-alpha.jar` 包含了JAI的核心组件,特别是图像I/O部分,允许开发者处理多种图像文件格式,如JPEG、PNG、TIFF等。JAI的Image I/O扩展了Java的标准I/O框架,使得处理图像文件变得更加方便。例如,你...

Global site tag (gtag.js) - Google Analytics