-
Java въпрос
Искам да направя JPG файл от Graphics2d обекти? Функцията която използвам за засъздаване нa JPG файла е:
public void saveComponentAsJPEG(Component myComponent, String filename) {
Dimension size = myComponent.getSize();
BufferedImage myImage =
new BufferedImage(289, 161,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = myImage.createGraphics();
myComponent.paint(g2);
try {
OutputStream out = new FileOutputStream(filename);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(myImage);
out.close();
} catch (Exception e) {
System.out.println(e);
}
}
,като с myComponent.paint(g2); се вика :
public void paint(Graphics g){
Graphics2D g2=(Graphics2D)g;
g2.setPaint(textura[0]);
g2.fillRect(0,0,80,50);
g2.setPaint(textura[1]);
g2.fillRect(80,0,80,50);
g2.setPaint(textura[2]);
g2.fillRect(160,0,80,50);
g2.drawImage(image[0],0,50,80,50,this);
g2.drawImage(image[1],80,50,80,50,this);
g2.drawImage(image[2],160,50,80,50,this);
g2.drawImage(image[3],240,50,80,50,this);
g2.drawImage(image[4],0,150,80,50,this);
g2.drawImage(image[5],80,150,80,100,this);
g2.drawImage(image[6],160,150,80,50,this);
g2.drawImage(image[7],240,150,80,50,this);
}
, textura[] e масив от TexturePaint обекти, а image е масив от Image обекти.
Значи програмата работи без проблем до първият g2.drawImage. След изпълнението на g2.drawImage командата възниква някаква грешка,програмата прекъсва изпълнението си и не се създава JPG файла.
Някой има ли представа защо става така. И как мога да реша този проблем?
-
Java въпрос
според документацията Graphics2d.drawImage() метода не прави нищо ако <tt>img</tt> аргумента е null. провери масива дали е изряден. и какво значи точно програмата прекъсва изпълнението - хвърля ли някакъв exception?
-
Java въпрос
Ето това представлява Image масива ми:
Image[] image=new Image[8]; //масив от изображения
URL base;
MediaTracker mt;
mt = new MediaTracker(this);
try {
base = getCodeBase();
}
catch (Exception e) {}
image[0] = getImage(base,"images/i1.gif");
image[1] = getImage(base,"images/i2.jpg");
image[2] = getImage(base,"images/i3.gif");
image[3] = getImage(base,"images/k1.gif");
image[4] = getImage(base,"images/k2.gif");
image[5] = getImage(base,"images/k3.gif");
image[6] = getImage(base,"images/k4.gif");
image[7] = getImage(base,"images/k5.gif");
mt.addImage(image[0],1);
mt.addImage(image[1],2);
mt.addImage(image[2],3);
mt.addImage(image[3],4);
mt.addImage(image[4],5);
mt.addImage(image[5],6);
mt.addImage(image[6],7);
mt.addImage(image[7],8);
try {
mt.waitForAll();
}
catch (InterruptedException e) {}
exception,който се получава при дебъгването е: java.lang.NullPointerException
Най-интересното е ,че img наистина е null, но картинките все пак ми показва в браузера,с метода paint на аплета, a когато се опитам да преобразувам нарисуваното в JPG файл ми дава тази грешка(java.lang.NullPointerException)
-
Java въпрос
Намерих си проблема. Работата е там,че аз имам 2 аплета. В единия рисувам т.е. използвам paint функцията му, а в init() функцията на същия зареждам картинките.
В другия аплет имам бутон при натискането на който се извиква функцията saveComponentAsJPEG(Component myComponent, String filename), която създаване JPG файла. Проблема е в това,че тази функция вика само paint на другия аплет без да извика init на същия за да зареди картинките, затова и img ми е null.
Сложих всичко в 1 аплет и тръгна без проблем.