如何安装JAI Image I/O package?

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

你对这个回答的评价是?

}

Java中进行图像/O(即读图片和写图片不涉及到复杂图像处理)有三个方法:

    其中仅仅ja-mageo是关于图像/O的,其他的可以不看

当然,还有众多的java开源工具包可以读写图像例如JM, JMagc等,但JDK目前本身能 够读写图片就用JDK的,开发和部署方便不需要额外下载jar包。

由于JA是Java新加入的很多组件不是正式规范,JDK不自带因此开發和部署需要额外 安装,安装文件在官网下载得到

如果你仅仅想读取常见格式的图片,不需要用JA这么高级这么庞大的东西 用Java mage /O AP即可。

Java mage /O AP 主偠在 javax.mageo 下面JDK已经内置了常见图片格式的插件, 但它提供了插件体系结构第三方也可以开发插件支持其他图片格式。

下面这段代码可以展礻JDK内置支持的图片格式。

主页上有一个文档Java mage /O AP Gude,很通俗易懂可以让你快速上手。以下 内容主要来自这个文档的第3章

Java mage /O AP 会自动探测图片嘚格式并调用对应的插件进行解码,当安装了一个新 插件新的格式会被自动理解,程序代码不需要改变

上一节谈到的方法对于简单程序已经足够了。不过Java mage /O AP 提供了为编写复 杂程序的能力。为了利用AP的高级特性应用程序应当直接使用类mageReader 和 mageWrter。

与其用mageO类来进行所有的解码操莋不如用mageO类去得到一个mageReader对象, 再用这个对象去进行读操作:

如果输入源文件包含多张图片而程序不保证按顺序读取时,第二个参数应該设置为 false对于那些只允许存储一张图片的文件格式,永远传递true是合理的

当mageReader对象有了输入源后,我们就可以获取图片信息而不用把整张圖片数据都读入 内存例如,调用reader.getmageWdth(0)可以让我们获得文件中第一张图片的宽度一 个好的插件会试图解码文件的必要部分,去获得图片的宽喥而不用读取任何一个像素。

如果需要更多的控制可以向read()方法传递一个mageReadParam类型的参数。一个 mageReadParam对象可以让程序更好的利用内存它不仅允許指定一个感兴趣的区域,还 可以指定一个抽样因子用于向下采样。

例如为了只解码图片的左上角的1/4,程序可以先获取一个合适的mageReadParam对潒:

接下来指定图片区域:

结果是一张新图片,宽和高都只有原图片的一半

另一个例子,为了读取每三个像素中的一个产生一个原圖片1/9大小的图片,可以用 mageReadParam指定抽样因子:

插件有时会提供一个OParamController类这是可选的。略

mageReader 中所有与图片打交道的方法都有一个magendex 参数,这个参数鼡于读取多 图片文件中的一张

mageReader.getNummages()返回多图片文件中的图片个数。这个方法有一个boolean参数 allowSearch。有的图片格式典型的GF,没有提供任何获取文件Φ的图片个数方法除 非读取整个进行解析。这样代价很高因此设置allowSearch为false可以让方法直接返回 -1,而不是实际的图片个数如果此参数是true,則该方法总会返回文件中实际的图片个 数

即使在不知道文件中图片个数的情况下,仍可以调用read(magendex); 如果索引值过大 该方法会抛出ndexOutOfBoundsExcepton异常。因此程序可以递增索引去获取图片, 直到异常

有的图片格式允许一个(或多个)小的预览图,与主图片一起存储在文件中这些 “缩略圖”对于快速识别图片很有用,不用解码整个图片

如果存在缩略图,可以调用如下代码获取:

就像我们可以用mageO 的一个方法获取某种图片格式的mageReader对象一样我们也可 以获取mageWrter对象:

最后,可以把图片写入到输出源:

Omage类用于存储图片缩略图或元信息的引用。下一节将讨论Metadata目湔,我们 简单地给Metadata相关参数传递null mageWrter 类有一个方法wrte(),用于从Omage创建一个新文件还有一个方法 wrtensert(),用于向一个已存在文件添加一个Omage对象通过调鼡这两者,可以创 建一个多图片文件:

}

我要回帖

更多关于 I/O 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信