歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

在J2ME中實現高效高質縮小圖片

以下算法可以把一張圖片快速縮小到原大小的1/4,即長寬都為原來的一半,且因為使用鄰域組合的算法(即從原圖4個像素累加再4等分得到新圖上的一個像素),效果非常好。

雖然不能實現任意比例放縮,但以下算法短小精悍效率高,可用於一些特定場合,比如:顯示圖片的縮略圖等。

int w1 = img1.getWidth(), h1 = img1.getHeight(), w2 = w1 >>> 1, h2 = h1 >>> 1; 
int[] rgb1 = new int[w1 * h1]; 
img1.getRGB(rgb1, 0, w1, 0, 0, w1, h1); 
int[] rgb2 = new int[w2 * h2]; 
int i1, j1, i2, j2, n; 
for (j2 = j1 = 0, n = w2 * h2; j2 < n; j2 += w2, j1 += 2 * w1) { 
    for (i2 = i1 = 0; i2 < w2; i2++, i1 += 2) { 
        int p1 = rgb1[j1 + i1], p2 = rgb1[j1 + i1 + 1], p3 = rgb1[j1 + w1 + i1], p4 = rgb1[j1 + w1 + i1 + 1]; 
        rgb2[j2 + i2] = ((p1 & 0x00FCFCFC) >>> 2) + ((p2 & 0x00FCFCFC) >>> 2) + ((p3 & 0x00FCFCFC) >>> 2) + ((p4 & 0x00FCFCFC) >>> 2); 
    } 

Image img2 = Image.createRGBImage(rgb2, w2, h2, false); 

Copyright © Linux教程網 All Rights Reserved