2012-08-04 3 views
2

나는 이미지 URL에서 이미지 (LCDUI 이미지를) 만들었습니다

HttpConnection c = (HttpConnection) Connector.open(imageurl); 
int len = (int)c.getLength(); 

if (len > 0) 
{ 
is = c.openDataInputStream(); 
byte[] data = new byte[len]; 
is.readFully(data); 

img = Image.createImage(data, 0, len); 

내가 여기에 높이와 너비를 설정하려면? 그리고 난 표시 할

답변

0

너비와 높이를으로 설정 할수 없습니다. 하지만, 이미지를 아래의 방법으로 크기를 조정할 수 있습니다.

public Image resizeImage(Image src, int screenHeight, int screenWidth) { 
     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 index = 0; index < screenWidth; index++) { 
      g.setClip(index, 0, 1, srcHeight); 
      g.drawImage(src, index - (pos >> 16), 0); 
      pos += ratio; 
     } 

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

     //Vertical resize 

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

    } 
+0

: 여기

은 정리하는 조각이다 java/image-resizing-137933.html - 컴파일은하지만 테스트에서 이미지의 맨 아래에 흰색 띠가 남기 때문에 제대로 이미지의 크기가 조정되지 않습니다. –

1

이미지로드 중에이 정보가로드되고 설정되므로 너비와 높이를 설정할 필요가 없습니다. 따라서 이미지가 320x100이면 코드가 320x100 이미지를 생성합니다. img.getWidth()는 320 img.getHeight()Image 오브젝트의 폭과 높이를 변화시킬 수 없다 (100)

을 반환 반환. 너비와 높이를 쿼리 할 수 ​​있습니다.

이미지를 캔버스에있는 ImageItem 개체로 표시 할 준비가되었습니다.

0

(는 이미지 크기를 줄이고 이미지 하단에 흰색 밴드 채 - 같은 화면 비율을 유지에도 불구하고) 허용 된 대답은 나를 위해 작동하지 않았다. CodeRanch forum에서 작동하는 스 니펫 코드를 발견했습니다. http://www.oracle.com/technetwork/ -

위의 코드는 (컴파일되지 않음)이 페이지의 예에서 촬영 될 수도
protected static Image resizeImage(Image image, int resizedWidth, int resizedHeight) { 

    int width = image.getWidth(); 
    int height = image.getHeight(); 

    int[] in = new int[width]; 
    int[] out = new int[resizedWidth * resizedHeight]; 

    int dy, dx; 
    for (int y = 0; y < resizedHeight; y++) { 

     dy = y * height/resizedHeight; 
     image.getRGB(in, 0, width, 0, dy, width, 1); 

     for (int x = 0; x < resizedWidth; x++) { 
      dx = x * width/resizedWidth; 
      out[(resizedWidth * y) + x] = in[dx]; 
     } 

    } 

    return Image.createRGBImage(out, resizedWidth, resizedHeight, true); 

}