标签: javax.imageio

Java ImageIO IIOException:不支持的图像类型?

首次使用Java处理图像,并得到一些未记录得很好的奇怪异常.这是失败的代码行:

BufferedImage imgSelected = ImageIO.read(new File("/abs/url/to/file/image.jpg"));
Run Code Online (Sandbox Code Playgroud)

这一行抛出了一个IIOException,其中不支持的图像类型作为异常消息.我检查并重新检查它实际上是这行引发异常,File对象是有效的,URL是有效的,并且image.jpg实际上是一个有效的JPG,在其他图像查看器中加载完全正常.

我该怎么做才能获得有关此异常性质的更多信息?这是在Java 7中加载图像的传统方式,还是旧的/弃用方法?关于这些"不支持的图像类型"异常的信息并不是很多,当然,ImageIO支持JPG!

谢谢你的帮助!

java image exception javax.imageio

29
推荐指数
3
解决办法
4万
查看次数

使用Java的ImageIO将像素数组转换为Image对象?

我目前正在使用以下代码将像素值数组(最初使用java.awt.image.PixelGrabber对象创建)转换为Image对象:

public Image getImageFromArray(int[] pixels, int width, int height) {
    MemoryImageSource mis = new MemoryImageSource(width, height, pixels, 0, width);
    Toolkit tk = Toolkit.getDefaultToolkit();
    return tk.createImage(mis);
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用ImageIO软件包中的类来实现相同的结果,因此我不必使用AWT工具包?

Toolkit.getDefaultToolkit()似乎不是100%可靠,有时会抛出一个AWTError,而ImageIO类应该始终可用,这就是为什么我有兴趣改变我的方法.

java image toolkit awt javax.imageio

27
推荐指数
2
解决办法
6万
查看次数

ImageIO - 获取图像类型和exif数据

给定一些源文件(或更通用的 - 输入流),我需要找出答案

  • 它是一个图像
  • 如果是图像,则检索其类型(png/jpeg/gif/etc)
  • 检索exif数据(如果有)

我查看了API,但目前尚不清楚如何获取图像类型或Exif数据.

java javax.imageio

25
推荐指数
3
解决办法
3万
查看次数

使用ImageIO创建动画GIF?

有没有人设法说服ImageIO写一个动画GIF,特别是设置正确的元数据?我的第一次尝试大致如下(其中b1和b2是BufferedImages):

ImageTypeSpecifier spec = new ImageTypeSpecifier(b1);
ImageWriter wr = ImageIO.getImageWriters(spec, "GIF").next();
wr.setOutput(ImageIO.createImageOutputStream(new File("C:\\Flashing.gif")));
ImageWriteParam param = wr.getDefaultWriteParam();
IIOMetadata meta = wr.getDefaultImageMetadata(spec, param);
wr.prepareWriteSequence(meta);
wr.writeToSequence(new IIOImage(b1, null, null), param);
wr.writeToSequence(new IIOImage(b2, null, null), param);
Run Code Online (Sandbox Code Playgroud)

这似乎几乎可行,但是:

  • 我显然需要以某种方式设置"适当的"元数据来设置图像之间的时间并理想地使它们循环(我天真地希望默认会做一些明智的事情,但是嘿......)
  • 默认情况下,它所写的任何元数据显然不是很正确:GIMP在加载文件时会给出一些错误消息,尽管在Firefox的测试网页中嵌入图像确实可以非常快速地连续显示这两个图像.接近我想要的......

如果有人从ImageIO编写动画GIF,可以分享工作代码片段或如何解决上述问题,我们将不胜感激!

java animated-gif javax.imageio

23
推荐指数
1
解决办法
2万
查看次数

无法使用Java ImageIO标准库读取和写入TIFF图像文件

我不知道如何处理TIFF图像,但我无法使用直接Java标准ImageIO库来读取或写入任何图像.有什么想法吗?

谢谢.

java tiff javax.imageio

22
推荐指数
3
解决办法
5万
查看次数

在iOS上缩小图像的内存效率最高的方法是什么?

在后台线程中,我的应用程序需要从磁盘读取图像,将它们缩小到屏幕大小(1024x768或2048x1536)并将它们保存回磁盘.原始图像主要来自相机胶卷,但其中一些可能具有较大的尺寸(例如3000x3000).

稍后,在不同的线程中,这些图像将经常缩小到500x500左右的不同大小并再次保存到磁盘.

这让我想知道:在iOS,性能和内存方面,最有效的方法是什么?我使用了两种不同的API:

两者都适合我,但我想知道他们在性能和内存使用方面是否有任何差异.如果有更好的选择,当然.

memory-management core-graphics cgimage ios javax.imageio

22
推荐指数
3
解决办法
5158
查看次数

从URL下载图像?

我正在尝试使用HTTP :: get从我创建的URL下载Google图表的图像.

这是我的第一次尝试:

failures_url  = [title, type, data, size, colors, labels].join("&")

require 'net/http'

Net::HTTP.start("http://chart.googleapis.com") { |http|
  resp = http.get("/chart?#{failures_url")
  open("pie.png" ,"wb") { |file|
    file.write(resp.body)
  }
}
Run Code Online (Sandbox Code Playgroud)

其中只生成一个空的PNG文件.

对于我的第二次尝试,我使用failure_urlhttp.get()调用内部存储的值.

require 'net/http'

Net::HTTP.start("http://chart.googleapis.com") { |http|
  resp = http.get("/chart?chtt=Builds+in+the+last+12+months&cht=bvg&chd=t:296,1058,1217,1615,1200,611,2055,1663,1746,1950,2044,2781,1553&chs=800x375&chco=4466AA&chxl=0:|Jul-2010|Aug-2010|Sep-2010|Oct-2010|Nov-2010|Dec-2010|Jan-2011|Feb-2011|Mar-2011|Apr-2011|May-2011|Jun-2011|Jul-2011|2:|Months|3:|Builds&chxt=x,y,x,y&chg=0,6.6666666666666666666666666666667,5,5,0,0&chxp=3,50|2,50&chbh=23,5,30&chxr=1,0,3000&chds=0,3000")
  open("pie.png" ,"wb") { |file|
    file.write(resp.body)
  }
}
Run Code Online (Sandbox Code Playgroud)

并且,出于某种原因,即使第一次尝试在http.get()调用中具有相同的数据,此版本仍然有效.有人知道为什么吗?

解:

在试图弄清楚为什么会发生这种情况后,我发现" 如何通过HTTP下载二进制文件? ".

其中一条评论提到http://Net::HTTP.start(...)电话会议中删除,否则将无法成功.我这样做之后果然:

failures_url  = [title, type, data, size, colors, labels].join("&")

require 'net/http'

Net::HTTP.start("chart.googleapis.com") { |http|
  resp = http.get("/chart?#{failures_url")
  open("pie.png" ,"wb") { |file| …
Run Code Online (Sandbox Code Playgroud)

ruby httpwebrequest javax.imageio

21
推荐指数
1
解决办法
3万
查看次数

ArrayIndexOutOfBoundsException:4096在读取gif文件时

我能够读取png文件.但是在读取gif文件时获取ArrayIndexOutOfBoundsException:4096.

byte[] fileData = imageFile.getFileData();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileData);
RenderedImage image = ImageIO.read(byteArrayInputStream)
Run Code Online (Sandbox Code Playgroud)

抛出的异常看起来像

java.lang.ArrayIndexOutOfBoundsException: 4096
    at com.sun.imageio.plugins.gif.GIFImageReader.read(Unknown Source)
    at javax.imageio.ImageIO.read(Unknown Source)
    at javax.imageio.ImageIO.read(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题,解决方案是什么?

java gif javax.imageio

21
推荐指数
2
解决办法
6392
查看次数

是否有100%的Java替代ImageIO来读取JPEG文件?

我们正在使用Java2D调整上传到我们网站的照片的大小,但是我们遇到了一个问题(一个看似旧的问题,参见:http://forums.sun.com/thread.jspa?threadID = 5425569) - 一些特殊的JPEG CMMException当我们尝试ImageIO.read()包含其二进制数据的InputStream 时引发a :

java.awt.color.CMMException: Invalid image format
 at sun.awt.color.CMM.checkStatus(CMM.java:131)
 at sun.awt.color.ICC_Transform.<init>(ICC_Transform.java:89)
 at java.awt.image.ColorConvertOp.filter(ColorConvertOp.java:516)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.acceptPixels(JPEGImageReader.java:1114)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImage(Native Method)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1082)
 at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:897)
 at javax.imageio.ImageIO.read(ImageIO.java:1422)
 at javax.imageio.ImageIO.read(ImageIO.java:1326)
    ...
Run Code Online (Sandbox Code Playgroud)

(剪断了堆栈跟踪的剩余部分,这是我们的ImageIO.read()调用,servlet代码等)

我们将其缩小到特定相机拍摄的照片,然后我选择了一张触发此错误的照片:http://img214.imageshack.us/img214/5121/estacaosp.jpg.我们注意到这只发生在Sun的JVM上(在Linux和Mac上,只是在1.6.0_20上进行了测试) - 一台带有OpenJDK的测试机器可以顺利读取相同的照片,这可能是由于JPEG阅读器的不同实现.

不幸的是,我们无法在生产中切换JVM,也无法使用ImageMagick(http://www.imagemagick.org/)等本机相关解决方案.

考虑到这一点,我的问题是:是否存在可以处理链接照片之类的照片的ImageIO JPEG读取器的替代品?如果没有,我们可以使用另一个100%纯Java照片大小调整解决方案吗?

谢谢!

java jpeg java-2d resize-image javax.imageio

20
推荐指数
3
解决办法
2万
查看次数

适用于64位Windows的JAI和ImageIO

我搜索JAI和ImageIO库64位窗口,但我没有找到任何版本的这些.6-7年前,Java Bug跟踪系统的最后64位获胜请求.

我想,jai的开发者不会发布win64的任何版本.:(

我的问题是,我们可以从64bit窗口的源代码构建jai和imageio,这可能吗?怎么样?

非常感谢...

java jai javax.imageio

19
推荐指数
1
解决办法
1万
查看次数