Permalänk

Problem med enorma bilder i JAVA

Hej

Det är så att jag leker lite med bilder i Java. Bilderna jag använder har olika storlek, och det jag vill är att de ska komprimeras eller dras ut beroende på om de är större eller mindre än den JFrame jag använder.
Jag tycker att det borde finnas någon sådan guide eller nått på nätet, men jag är antagligen för dålig på att söka.

Men är det någon som vet hur jag ska koda?

Här är koden jag använder:
Det är classen main som skapar objektet LoadAnImage.
Jag har döpt bilderna till B (*NUMMER*).jpg, det är det som String imgnr är. det är asså ett nummer. imgnr - imagenumber

import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;

public class LoadAnImage
{
LoadAnImage(String imgnr) throws IOException
{
String path = "C:/Documents and Settings/HoFFa/Skrivbord/asdasdasd/B ("+imgnr+").jpg";
File file = new File(path);
BufferedImage image = ImageIO.read(file);
JLabel label = new JLabel(new ImageIcon(image));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label);
f.setLocation(200,200);
f.setVisible(true);
}
}

Visa signatur

"SönderCrew" Is the shit

Permalänk
Medlem

En ImageIcon kan inte skalas, så du får använda java.awt.Image eller subklasser till den (det är en abstrakt klass).

import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JLabel; public class LoadAnImage { public LoadAnImage(String imageNumber) throws java.io.IOException { int WIDTH = 200; int HEIGHT = 200; Image image = new ImageIcon("C:/Documents and Settings/HoFFa/Skrivbord/B (" + imageNumber + ").jpg").getImage(); Image scaled = image.getScaledInstance(WIDTH, HEIGHT, Image.SCALE_DEFAULT); JLabel label = new JLabel(new ImageIcon(scaled)); ...

Möjligtvis. Du får testa dig fram för att se vad som fungerar. Ovanstående är bara någonting ur huvudet, som jag inte har en aning om det fungerar eller inte.

Permalänk

ok. hehe. jag ska se, tyvärr kunde jag inte testa det just nu. men jag ville tacka i alla fall

Visa signatur

"SönderCrew" Is the shit

Permalänk
Medlem

Nu hade jag tittat lite dåligt på din kod, men ser nu att du faktiskt hämtar en BufferedImage via ImageIO.read() - då kan du skala den där eftersom att BufferedImage är en subklass till just Image.