代码之家  ›  专栏  ›  技术社区  ›  Michael

j2me中的image.createimage问题

  •  0
  • Michael  · 技术社区  · 17 年前

    我在j2me上试过这个

    try {
        Image immutableThumb = Image.createImage( temp, 0, temp.length);
    } catch (Exception ex) {
        System.out.println(ex);
    }
    

    我犯了这个错误: java.lang.IllegalArgumentException:

    我该怎么解决?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Tyler Levine    17 年前

    如果第一个参数的格式不正确或无法解码,image.createImage()将引发IllegalArgumentException。(我假设temp是字节[])。

    http://java.sun.com/javame/reference/apis/jsr118/javax/microedition/lcdui/Image.html#createImage(byte[],%20int,%20int)

    (由于某种原因,此URL拒绝成为超链接(?)

        2
  •  1
  •   izb    17 年前

    很难说没有更多的细节或周围的代码,但我最初的怀疑是,你试图加载的文件格式不受设备支持。

        3
  •  1
  •   Malcolm    17 年前

    让我们看看文档:抛出了illegalargumentexception

    如果ImageData格式不正确或无法解码

    因此,可能的原因可能是图像格式不受支持,也可能是数据被截断。记住,您应该将整个文件传递给该方法,包括所有头文件。如果你对格式有疑问,最好选择 PNG ,无论如何都必须支持它。

        4
  •  0
  •   Cipi    16 年前

    我的midlet也有同样的问题,在我的例子中,问题是从socket的inputstream中读取的jpeg图像附带的http头。我通过找到JPEG SOI标记来解决这个问题,这个标记由两个字节标识: FFD8 在我的字节数组中。当我找到 FFD8 在字节数组中,我修剪表示http头的起始字节,然后可以调用 createImage() 没有任何异常被抛出…

    你应该检查一下你的情况。看看这是真的吗 (temp[0] == 0xFF && temp[1] == 0xD8) 如果不是,修剪 temp 所以你删除了http头或其他垃圾…

    附笔。 我假设您正在阅读JPEG图像,如果没有,请在 临时雇员 数组。

    如果这没有帮助,并且您正在读取jpeg图像,请确保数组以 FFD8 FFD9 (这是EOI标记)。如果它不以EOI结束,就像我为SOI解释的那样修剪末端…

    P.P.S 如果你发现 临时雇员 是有效的,则您的平台无法解码JPEG图像或 临时雇员 对于JPEG解码器是大的。