создание образа в мидлете не удается - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь сделать изображение следующим образом: -

    try 
    {
        strom = Image.createImage("stromB.png");
        map0 =  Image.createImage("map0.png");
    } 
    catch (Exception e) 
    {
        System.out.println("image creatino faild");
        System.out.println(e.getMessage());
    }

strom работает нормально, но map0 всегда выдает исключение.Я предполагаю, что размер больше, и может быть поэтому.

  • Как я могу использовать большее изображение PNG в мидлете?
  • Есть ли какие-либо ограничения для мидлета?
  • Какой максимальный размер я могу использовать для мидлета?

1 Ответ

0 голосов
/ 18 января 2012

исключение выброса map0 может быть из-за большого размера, используйте следующий метод для увеличения изображения, чтобы изменить его размер в соответствии с размером экрана

 /**
  * This methog resizes an image by resampling its pixels
  * @param src The image to be resized
  * @return The resized image
  */

  private Image resizeImage(Image src) {
      int srcWidth = src.getWidth();
      int srcHeight = src.getHeight();
      Image tmp = Image.createImage(screenWidth, srcHeight);
      Graphics g = tmp.getGraphics();
      int ratio = (srcWidth << 16) / screenWidth;
      int pos = ratio/2;

      //Horizontal Resize        

      for (int x = 0; x < screenWidth; x++) {
          g.setClip(x, 0, 1, srcHeight);
          g.drawImage(src, x - (pos >> 16), 0, Graphics.LEFT | Graphics.TOP);
          pos += ratio;
      }

      Image resizedImage = Image.createImage(screenWidth, screenHeight);
      g = resizedImage.getGraphics();
      ratio = (srcHeight << 16) / screenHeight;
      pos = ratio/2;        

      //Vertical resize

      for (int y = 0; y < screenHeight; y++) {
          g.setClip(0, y, screenWidth, 1);
          g.drawImage(tmp, 0, y - (pos >> 16), Graphics.LEFT | Graphics.TOP);
          pos += ratio;
      }
      return resizedImage;

  }//resize image    
...