【问题标题】:Loading images in j2me在 j2me 中加载图像
【发布时间】:2012-02-14 12:26:13
【问题描述】:

我在 j2me 中加载图像时遇到问题
我可以在哪里为 j2me 模拟器上传某种类型的图像,但对于某些它不加载
所以有什么问题?表示可以在扩展 Canvas 类的类中加载什么类型的图像?应该有特定的图片大小或类型要上传吗?

【问题讨论】:

    标签: image java-me


    【解决方案1】:

    我不确定您到底在寻找什么,但您所描述的行为听起来就像您遇到了 OutOfMemory 异常。尝试减少图像的尺寸(堆使用基于尺寸)并查看行为是否停止。这会让您知道这是否真的是 OutOfMemory 问题或其他问题。

    其他提示:

    1) 从最大到最小加载图像。这有助于堆碎片化,并为最大的图像提供最大的堆空间。 2) 卸载(设置为 null)以与加载和垃圾收集方式相反的顺序执行此操作。确保在调用 GC 后使用 Thread.yield()。 3) 确保只加载您需要的图像。从应用程序不再处于的状态中卸载图像。 4)由于您正在创建精灵,因此一张图像可能有多个精灵。考虑创建一个图像池以确保只加载一次图像。然后只需将每个 Sprite 对象指向它需要的池中的图像。您在问题中的示例似乎很可能多次将同一图像加载到内存中。这很浪费,可能是 OutOfMemory 问题的一部分。

    【讨论】:

      【解决方案2】:

      我猜这个问题是以下原因之一:

      1.资源名称:

      资源名称区分大小写;例如,/ellen-png.png/ellen-png.PNG 或任何其他变体不同。

      2.格式:

      必须支持的唯一格式是 png。有些手机可能支持其他格式,例如:

      • 图形交换格式 (GIF)
      • 联合摄影专家组(JPEG、JPG)
      • Windows 或 OS/2 位图 (BMP)
      • 标记图像文件格式 (TIF)
      • PC 画笔位图 (PCX)
      • 原始签名 PCM 数据 (RAW)

      但这取决于设备,如果您想尽可能跨平台,那么只需使用 pngs:
      1999 年,当 Sun Microsystems 开发 J2ME 平台规范及其支持的 API 时,PNG 被选为默认的图像格式,因为它具有图形功能、文件小并且不受专利问题的影响。
      要确定 J2ME 是否处理特定的媒体格式,请调用 getSupportedContentTypes 方法。此方法返回支持的媒体类型的字符串数组,并包括音频和视频格式以及图像格式。字符串以 MIME 类型格式显示此信息。例如,要检查 GIF 支持,您扫描此数组,查找 GIF MIME 类型字符串。如果匹配,则手机的 J2ME 实现支持 GIF 文件的原生显示。此 sn-p 代码可用于此目的:

      private String   mediaTypes[];   
      private final    String GIF_MIME_TYPE = "image/gif";   
      private boolean  gifSupported;    
      
      // Get the media types to check for support of GIF file display   
      mediaTypes = Manager.getSupportedContentTypes(null);   
      int count = mediaTypes.length;   
      
      // Check list for GIF MIME type; set support flag if present   
      gifSupported = false;   
      for (int i = 0; i < count; i++) {   
          if (mediaTypes[i] == GIF_MIME_TYPE)   
              gifSupported = true;   
      } // end for   
      

      如果您想使用特殊格式,您可以使用特殊解码器从不支持的格式解码图像。
      createImage 抛出 java.io.IOException 如果资源不存在(特别是不正确的资源名称),无法加载数据,或者无法解码图像数据。因此,如果您捕获此异常,请检查每个案例.

      3.尺寸:
      请注意,特定设备可以加载的 JAR 文件的大小取决于多种因素,包括手机制造商和运营商施加的限制,甚至是特定设备上的可用内存配置。图像文件大小必须在 9.1 KB 的范围内(GIF 到 69.5) TIF 的千字节。当然,由于您可能希望使它们尽可能小,因此您可能需要尝试使用像 pngcrush 这样的工具。其主要目的是通过尝试各种压缩级别和 PNG 过滤方法来减小 PNG IDAT 数据流的大小。

      参考文献:

      SDN FAQ - What image types does MIDP support?
      gamedev.net - Image Formats in J2ME
      drdobbs.com - Displaying GIF Images on J2ME Mobile Phones

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多