Hogyan tudnám Javaban ezt a JFrame típusú képet elmenteni jpg fájlba?
Utánanéztem, viszont csak azt leltem, hogyan lehet BufferedImage típusú képet elmenteni, és megnyitni. Viszont egy ilyen JPanel-el létrehozott JFrame képet( ez ugyebár nem pixelgrafikus, hanem vektorgrafikus kép), amit programmal generálok, hogyan tudnám képfájlként elmenteni? Illetve, ezt a képfájlt ismét megnyitni( már ha el lehet, nekem inkább a képfájlba való írás érdekel). Valaki tudna ebben segíteni?
Itt lenne maga a program, ami legerálja a képet:
package labor9;
import javax.imageio.ImageIO;
import java.io.File;
import java.awt.*;
import javax.swing.*;
import java.io.IOException;
public class Labor9 extends JPanel {
public static void main(String[] args) {
// TODO code application logic here
JFrame ship = new JFrame("Titanic");
ship.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ship.setLocationRelativeTo(null);
ship.getContentPane().add(new Labor9());
ship.setSize(800, 500);
ship.setVisible(true);
}
@Override
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D) g;
Color sky = new Color(10,130,250);
g2d.setColor(sky);
g2d.fillRect(0,0,800,500);
g2d.setColor(Color.yellow);
g2d.fillOval(625,25,100,100);
g2d.setColor(Color.white);
g2d.fillOval(650,50,50,50);
g2d.setColor(Color.black);
g2d.fill(new Polygon(new int[]{100,400,500,50},new int []{400,400,300,300},4));
g2d.setColor(Color.red);
g2d.fill(new Polygon(new int[]{100,400,450,75},new int []{400,400,350,350},4));
g2d.drawLine(75,350,450,350);
g2d.setColor(Color.white);
g2d.drawString("Titanic",350,340);
Color sands = new Color(244,248,116);
g2d.setColor(sands);
g2d.fillOval(625,380,700,40);
Color sea = new Color(0,0,255);
g2d.setColor(sea);
g2d.fillRect(0,400,800,100);
Color lightgray = new Color(171,170,165);
g2d.setColor(lightgray);
g2d.fill(new Polygon(new int[]{130,400,400,130},new int []{300,300,250,250},4));
Color chimney = new Color(255,165,121);
g2d.setColor(chimney);
for (int i=0; i<4; i++) {
g2d.setColor(chimney);
g2d.fill(new Polygon(new int[]{150+i*60,190+i*60,190+i*60,150+i*60},new int []{250,250,180,180},4));
g2d.setColor(Color.black);
g2d.fill(new Polygon(new int[]{150+i*60,190+i*60,190+i*60,150+i*60},new int []{180,180,150,150},4));
}
Color window = new Color(128,255,255);
g2d.setColor(window);
for (int i=0; i<8; i++) {
g2d.fillRect(150+i*30,280,10,10);
}
for (int i=0; i<8; i++) {
g2d.fillRect(150+i*30,260,10,10);
}
g2d.setColor(Color.black);
g2d.drawLine(55,295,55+43*10,295);
for (int i=0; i<44; i++) {
g2d.drawLine(55+i*10,295,55+i*10,300);
}
}
}
Ha valaki tudna ebben segíteni, előre is köszönöm
Te lehetsz az első, aki segít a kérdezőnek!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!