有一个易于使用的图像库,用于简单的操作(读,写,旋转,重新调整大小)?

时间:2013-06-13 11:59:37

标签: java image image-processing

我的用例非常简单,我认为与许多其他开发人员共享。

我想:

 1. Load an image
 2. Read EXIF Orientation details (If available)
 3. Rotate (90, 180, 270) degrees
 4. Resize and store images.

我尝试通过论坛然后尝试:

Sanselan:阅读EXIF,但不是JPG张图片。此外,commons-imaging下载链接都已损坏。

Java ImageIO/Graphics2D:可以旋转/重新调整尺寸(不是一个衬垫,但可以理解),但建议您在旋转时确实会失去质量

*但是不会读取所有JPG张图片(某些CMMException文件会抛出jpg

其余的要么太旧而且不再维护,根本没有文件或我错过了'好'的。

有人可以建议一个支持这些“简单”用例的库吗?

*使用Sanselan阅读EXIF很好。 Read/Rotate/Re-size (JPGs)是我的主要问题

3 个答案:

答案 0 :(得分:3)

Thumbnailator是一个简单的Java库,没有外部依赖关系,可以(a)加载图像,(b)读取Exif元数据并自动旋转图像,(c)调整大小和(d)存储图像在一个单一的陈述中:

Thumbnails.of("path/to/image")
    .size(320, 240)
    .toFile("path/to/thumbnail");

以上将:

  • 打开图片
  • 调整大小以使其适合320像素x 240像素区域,而
  • 保持原始图像的宽高比,
  • 根据Exif元数据正确定位图像,
  • 将其存储到新图像

如果想要进行额外的旋转,也可以使用rotate方法。

免责声明:我是Thumbnailator的维护者。

答案 1 :(得分:1)

如果这是你唯一需要做的事情,那么可能会有太大的影响,但 OpenCV 是一个出色的图像处理库。 它附带Java bindings,并且已获得BSD许可。

我说这对于像这样的简单用例来说太过分了,仅仅因为它可以so much more。多年来它总是我的首选武器,仅仅因为它具有许多语言的绑定,几乎可以随处携带,甚至现在都支持GPU :)。

已经有一些问题可以完全回答你的想法。查看 here 以获取示例

希望这有帮助

答案 2 :(得分:0)

您最好使用java 2D库本身。

喜欢:

paint(Graphics g)
Graphics g2= (Graphics)g
g2.draw();
g2.rotate(give parameters)