wuhua 发表于 2013-1-27 05:28:23

使用JSR234实现对图片的缩放

JSR234是高级媒体API,在原有的MMA的基础上增加了很多Control,目前nokia的s60第三版已经开始支持jsr234,他主要支持对图片、声音等多媒体信息的一些高级处理,下面是使用其对图片缩放的方法:3GEYEd4Ew�d3ynf'h
3GEYE�g9}.A7n(P!RL
 
9I-wm"st@'H3/** *//**
wy/Z+dp'G3     * 实现对图片的缩放3GEYE0L|7[r0S7o1z
     * @param path String 缩放图片的路径
;k8U;e9R32_!Q3     * @param newWidth int 新的宽度3GEYEM6boR;XsH
     * @param newHeight int 新的高度3GEYEfo.r'Q$Y ]5eN/M:Q
     * @return Image 缩放以后得到的Image对象
K,tnxnZ3     */3GEYEW4Bo!g&q9^ul32`~5Pi/}
    public Image zoomImage(String path,int newWidth,int newHeight)...{3GEYEj'?{3p9A%tV
        Image re = null;
M%I32f*T!E+s+v3        MediaProcessor mp = null;
-k'@QZ%Uh}q3        ByteArrayOutputStream baos = new ByteArrayOutputStream();3GEYEm+z @"xuT~
        try ...{
S1W(OOG9e7@){3            mp = GlobalManager.createMediaProcessor("image/png");3GEYE0O4k*W6NGyb3q32B
            InputStream in = this.getClass().getResourceAsStream(path);
@\6q,e�Y32I*w"c'xq!p3            mp.setInput(in,MediaProcessor.UNKNOWN);
U"[^ yS2f3            mp.setOutput(baos);3GEYEo4L%m6Hw)[)JQb
            ImageTransformControl itc =(ImageTransformControl)mp.getControl("javax.microedition.amms.control.imageeffect.ImageTransformControl");3GEYEAg;n8M ]FL
            int sw = itc.getSourceWidth();
-P)zXG8~(k,s3            int sh = itc.getSourceHeight();3GEYE\+a�\g#At C8o
            int ow = newWidth;3GEYE Gp qulF}
            int oh = newHeight;
.iq/e;ViE7Z._$f3            itc.setSourceRect(0,0,sw,sh);
){X1]%[R r3D3            itc.setTargetSize(ow,oh,0);3GEYE}3bytvQ
            itc.setEnabled(true);
.li6^3|(D3            mp.start();
R$u;P$\A�e3            mp.complete();3GEYE9D6WE8j;w/f
            byte b[] = baos.toByteArray();
.x32[ B b/`_3            System.out.println(b.length);3GEYE@x8_Xh(F'Q
            int[] ints = new int;3GEYE ?iQ4P#bx
            int intcount, bytecount;3GEYE*f+^O/^8_&?u@([
            for (intcount = 0, bytecount = 0; bytecount < b.length; ) ...{3GEYEK9kMH)Hsx
                ints =3GEYEoI[+kK
                    (( ((int)(b)) << 24) & 0xFF000000) |  //A
2ESusRz3                    (( ((int)(b)) << 16) & 0x00FF0000) |  //R3GEYE%iu,Y`9o1T!H
                    (( ((int)(b)) << 8)  & 0x0000FF00) |  //G
&m+y}{n/a3                    (( ((int)(b))        & 0x000000FF) ); //B
@ha([C8q3                intcount++;
yo yl6r3                bytecount+=4;3GEYEm5? v-|3B.UR
            }3GEYED"m�_@5Cv5k V
3GEYEx A;u)fdL/_]Gx
            re = Image.createRGBImage(3GEYE[1Z,Xf f�?*`|Ki9{
            ints, ow, oh, true);3GEYERM6m"K6rAyeN OI7Y
           3GEYE6z6H3JK:a6c.l t
        } catch (MediaException ex) ...{3GEYECK L \lx�@s
            ex.printStackTrace();
E#zz0r.FaW.z3        }
$F$vX,Xh!~A3
1P2sRq2N3        return re;
aw32KX&W3N'm3    }
%|5k+G3z*dD^3在J2ME中可以直接使用这个方法,当然,先确定你的手机支持jsr234,缩放只是对图片处理的一个很小的方面,有兴趣的可以看看WTK2.5中关于JSR234的DEMO

'`$BkQ(a9Sx2C6|,? y3

gz(\.fFTYv2`3
JSR234并不是一个一定要实现的JSR,以前我的做法是自己写一个缩放算法。
页: [1]
查看完整版本: 使用JSR234实现对图片的缩放