Életünk egy meghatározó kérdése, hogyan is lehet egy pixel-t kirajzolni Java-ban. Nem egyszerű a kérdést megválaszolni, mert explicite nem támogatja a Java ezt a törekvésünket. Némi kerülő úton mégis célt érhetünk.
Hogy is kell ezt összehozni? Több megoldás is adódik. A legegyszerűbb kódot innen szedtem le.
import java.awt.image.*;
import java.awt.*;
import java.applet.*;
public class CreateAnImage extends Applet {
Image myImage;
public void init() {
int x = 100;
int y = 100;
myImage = createImage(x,y);
Graphics g = myImage.getGraphics();
g.drawLine(0,0,x,y);
g.drawLine(x,0,0,y);
for(int i=0; i < x; i+=2){
setPixel(myImage, 50, i, new Color(0).blue);
setPixel(myImage, i, 50, new Color(0).green);
}
}
public void paint(Graphics g) {
g.drawImage(myImage,0,0,this);
}
public void setPixel(Image image, int x, int y, Color color) {
Graphics g = image.getGraphics();
g.setColor(color);
g.fillRect(x, y, 1, 1);
g.dispose();
}
}
Ez egy Image objektumot módosítgat. Mondjuk fillRect-tel kitenni egy pixelt nem a leghatékonyabb. Néhány helyen (pl. >itt<) e helyett a BufferedImage és egy ebből létrehozott WritableRaster objektumra esküsznek. Ezek jobb teljesítményt nyújtanak. De én most az egyszerűségre próbálok koncentrálni. Plusz azokat minden színmélységre meg kell bütykölni.
Szedjük le a fent említett kódot és másoljuk kedvenc szövegszerkesztőnkbe (én a vim-et ajánlom. Ajánlatos egy ":se noai"-t kiadni a ctrl+v előtt). A file neve legyen CreateAnImage.java (persze lehet más a neve, csak akkor a class nevét a file-ban nevezzük át ugyanerre). Ez után "gcj -C CreateAnImage.java"-val létrehozhatjuk a CreateAnImage.class-t. Ezt már be is tehetjük egy HTML oldalba:
<APPLET CODE=CreateAnImage.class HEIGHT=100 WIDTH=100>
</APPLET>
A blog.hu-n a file kezelő miatt trükközni kell. Ez ugyanis nem engedi meg, hogy class kiterjesztésű file-t feltöltsünk. De azt APPLET tag sem veszi jónéven, hogy a class kiterjesztést simán txt-re cseréljük. Ezt az ellentmondást kell feloldanunk valahogy. Próbálkozzunk egy jar file-lal: "jar -c -v -f createanimage_jar.txt CreateAnImage.class". Először csak egy egyszerű HTML oldaba tettem be és működik:
<APPLET CODE=CreateAnImage.class ARCHIVE=createanimage_jar.txt HEIGHT=100 WIDTH=100>
</APPLET>
No hurrá! De azért még hozzáadtam a "CODEBASE=http://qltura.blog.hu/media/file" -t is, nehogy eltévedjen! Figylem! A jar file nevében a nagy betűket nem csípi a blog.hu!
Tehát a File-kezelő fülben a file folder alá feltöltöttem a createanimage_jar.txt, majd az alábbi sorokat szúrtam be a forráskódba:
<APPLET CODE=CreateAnImage.class CODEBASE="CODEBASE=http://qltura.blog.hu/media/file" ARCHIVE=createanimage_jar.txt HEIGHT=100 WIDTH=100>
</APPLET>
Navégre működik!!! Huh!
Kávézzunk egy kicsit minden nap!
+jegyzések