我在J2ME上试过这个
try {
Image immutableThumb = Image.createImage( temp, 0, temp.length);
} catch (Exception ex) {
System.out.println(ex);
}
我遇到了这个错误:
java.lang.IllegalArgumentException:
我该如何解决这个问题?
答案 0 :(得分:1)
如果第一个参数格式不正确或无法解码,Image.createImage()会抛出IllegalArgumentException。 (我假设temp是一个byte [])。
(此URL由于某种原因拒绝成为超链接(?))
答案 1 :(得分:1)
如果没有更多详细信息或更多周围代码,很难说,但我最初的怀疑是您尝试加载的文件采用的格式不受设备支持。
答案 2 :(得分:1)
让我们看看文档:抛出IllegalArgumentException
如果imageData格式不正确或无法解码
因此可能的原因可能是图像格式不受支持,也可能是截断数据。请记住,您应该将整个文件传递给该方法,包括所有标头。如果您对格式有疑问,最好选择 PNG ,无论如何都必须支持。
答案 3 :(得分:0)
我的MIDLET遇到了同样的问题,我的问题是我从套接字的InputStream读取的JPEG图像中出现的HTTP标头。我通过找到由我的字节数组中的两个字节FFD8
标识的JPEG SOI标记来解决它。然后当我在我的字节数组中找到FFD8
的位置时,我修剪了代表HTTP头的起始字节,然后我可以调用createImage()
而不会抛出任何异常......
您应该检查是否属于这种情况。只需检查是否为真(temp[0] == 0xFF && temp[1] == 0xD8)
,如果不是,请修改temp
的开头,以便删除HTTP标头或其他垃圾......
<强> P.S。强>
我假设您正在阅读JPEG图像,如果没有,请在temp
数组中查找相应的标题。
此外,如果这样做无效,并且您正在阅读JPEG图像,请确保数组以FFD8
开头,并以FFD9
(EOI标记)结束。如果它没有以EOI结束,那就像我为SOI解释的那样...... ...
<强> P.P.S 强>
如果您发现temp
中的数据有效,那么您的平台无法解码JPEG图像,或者temp
中的图像对于JPEG解码器来说很大。