Implementando Zoom in e Zoom out

Veja mais uma dica java que pode ser muito utilizada para aplicações J2ME.

Implementando Zoom in e Zoom out

 

Esta dica implementa o Zoom in e Zoom out(Image Zoomer). Ela pode ajudar desenvolvedores de jogos a acrescentar novos efeitos em seus aplicativos. Assim como pode também ser útil para aplicações J2ME, sendo feita sob encomenda para dispositivos móveis.

 

<B><SPAN >public </SPAN></B><SPAN >Image ZoomIn(Image img) {</SPAN>

<SPAN >Image outImg = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>
<B><SPAN >int</SPAN></B><SPAN >[] rgbOutput = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>

<SPAN >Graphics g = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>
<B><SPAN >int </SPAN></B><SPAN >width = </SPAN><SPAN >0</SPAN><SPAN >,height = </SPAN><SPAN >0</SPAN><SPAN >;</SPAN>

<B><SPAN >try</SPAN></B><SPAN >{</SPAN>

<SPAN >width = img.getWidth();</SPAN>
<SPAN >height = img.getHeight();</SPAN>
<SPAN >outImg  = Image.createImage(height,width);</SPAN>
<B><SPAN >int </SPAN></B><SPAN >rgbInput[]=</SPAN><B><SPAN >new int</SPAN></B><SPAN >[width*height];</SPAN>
<SPAN >rgbOutput = </SPAN><B><SPAN >new int</SPAN></B><SPAN >[width*height];</SPAN>
<SPAN >img.getRGB(rgbInput,</SPAN><SPAN >0</SPAN><SPAN >,width,</SPAN><SPAN >0</SPAN><SPAN >,</SPAN><SPAN >0</SPAN><SPAN >,width,height);</SPAN>

<B><SPAN >int </SPAN></B><SPAN >i,j,k,l;</SPAN>
<SPAN >k=</SPAN><SPAN >0</SPAN><SPAN >;</SPAN>
<B><SPAN >int </SPAN></B><SPAN >tempArr[][]  = </SPAN><B><SPAN >new int</SPAN></B><SPAN >[height][width];</SPAN>

<B><SPAN >for</SPAN></B><SPAN >(i=</SPAN><SPAN >0</SPAN><SPAN >;i<height;i++)</SPAN>
<B><SPAN >for</SPAN></B><SPAN >(j=</SPAN><SPAN >0</SPAN><SPAN >;j<width;j++)</SPAN>
<SPAN >tempArr[i][j] = rgbInput[k++];</SPAN>

<SPAN >k=</SPAN><SPAN >0</SPAN><SPAN >;</SPAN>
<B><SPAN >for</SPAN></B><SPAN >(i=</SPAN><SPAN >0</SPAN><SPAN >;i<height;i++) {</SPAN>
<B><SPAN >for</SPAN></B><SPAN >(j=</SPAN><SPAN >0</SPAN><SPAN >;j<width;j++) {</SPAN>
<SPAN >rgbOutput[k]= tempArr[j][i];</SPAN>
<SPAN >k++;</SPAN>
<SPAN >}</SPAN>
<SPAN >}</SPAN>
<SPAN >g = outImg.getGraphics();</SPAN>

<SPAN >} </SPAN><B><SPAN >catch</SPAN></B><SPAN >(Exception e){}</SPAN>

<B><SPAN >return </SPAN></B><SPAN >outImg.createRGBImage(rgbOutput,height,width,true);</SPAN>
<SPAN >}</SPAN>

<B><SPAN >public </SPAN></B><SPAN >Image zoomImage(Image img) {</SPAN>

<SPAN >image outImg = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>

<B><SPAN >int</SPAN></B><SPAN >[] rgbOutput = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>
<SPAN >Graphics g = </SPAN><B><SPAN >null</SPAN></B><SPAN >;</SPAN>
<B><SPAN >int </SPAN></B><SPAN >width = </SPAN><SPAN >0</SPAN><SPAN >,height = </SPAN><SPAN >0</SPAN><SPAN >;</SPAN>

<B><SPAN >try </SPAN></B><SPAN >{</SPAN>

<SPAN >width  =  img.getWidth();</SPAN>
<SPAN >height = img.getHeight();</SPAN>

<SPAN >outImg  = Image.createImage(width<<</SPAN><SPAN >1</SPAN><SPAN >,height<<</SPAN><SPAN >1</SPAN><SPAN >);</SPAN>

<B><SPAN >int </SPAN></B><SPAN >rgbInput[]=</SPAN><B><SPAN >new int</SPAN></B><SPAN >[width*height];</SPAN>
<SPAN >rgbOutput = </SPAN><B><SPAN >new int</SPAN></B><SPAN >[(width<<</SPAN><SPAN >1</SPAN><SPAN >)*(height<<</SPAN><SPAN >1</SPAN><SPAN >)];</SPAN>

<SPAN >img.getRGB(rgbInput,</SPAN><SPAN >0</SPAN><SPAN >,width,</SPAN><SPAN >0</SPAN><SPAN >,</SPAN><SPAN >0</SPAN><SPAN >,width,height);</SPAN>

<B><SPAN >int </SPAN></B><SPAN >i,j,k;</SPAN>
<SPAN >k=</SPAN><SPAN >0</SPAN><SPAN >;</SPAN>
<B><SPAN >for</SPAN></B><SPAN >(i=</SPAN><SPAN >0</SPAN><SPAN >;i<(height<<</SPAN><SPAN >1</SPAN><SPAN >);i+=</SPAN><SPAN >2</SPAN><SPAN >) {</SPAN>
<B><SPAN >for</SPAN></B><SPAN >(j=</SPAN><SPAN >0</SPAN><SPAN >;j<(width<<</SPAN><SPAN >1</SPAN><SPAN >);j+=</SPAN><SPAN >2</SPAN><SPAN >) {</SPAN>
<SPAN >rgbOutput[i*(width<<</SPAN><SPAN >1</SPAN><SPAN >) + j] = rgbInput[k] ;</SPAN>
<SPAN >rgbOutput[(i+</SPAN><SPAN >1</SPAN><SPAN >)*(width<<</SPAN><SPAN >1</SPAN><SPAN >) + j]  = rgbInput[k];</SPAN>
<SPAN >rgbOutput[i*(width<<</SPAN><SPAN >1</SPAN><SPAN >) + j+</SPAN><SPAN >1</SPAN><SPAN >]  = rgbInput[k];</SPAN>
<SPAN >rgbOutput[(i+</SPAN><SPAN >1</SPAN><SPAN >)*(width<<</SPAN><SPAN >1</SPAN><SPAN >) + j+</SPAN><SPAN >1</SPAN><SPAN >]  = rgbInput[k];</SPAN>
<SPAN >k++;</SPAN>
<SPAN >}</SPAN>
<SPAN >}</SPAN>

<SPAN >g = outImg.getGraphics();</SPAN>
<SPAN >} </SPAN><B><SPAN >catch</SPAN></B><SPAN >(Exception e){}</SPAN>

<B><SPAN >return </SPAN></B><SPAN >outImg.createRGBImage(rgbOutput,width<<</SPAN><SPAN >1</SPAN><SPAN >,height<<</SPAN><SPAN >1</SPAN><SPAN >,true);</SPAN>
<SPAN >}</SPAN>

Artigos relacionados