Java: загрузить изображение из файла, отредактировать и добавить в JPanel - PullRequest
0 голосов
/ 22 июля 2011

Я хочу загрузить изображение с моего компьютера в 2D-графику, чтобы потом его можно было отредактировать, а затем добавить в JPanel.Если вам нужен мой проект, я могу отправить его вам.

void loadImage()
{

    FileDialog fd = new FileDialog(new Frame(), "Please choose a file:", FileDialog.LOAD);
    fd.show();
    if (fd.getFile() != null)
    {
        File fil = new File(fd.getDirectory(), fd.getFile());
        strDirectory = fd.getDirectory();
        strFileType = fd.getFile();
        mainImage.setIcon(new ImageIcon(fil.toString()));
        getFileList(strDirectory);
        checkFileType(strFileType);
    }
}

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 23 июля 2011

пожалуйста, прочитайте этот урок о значке в Swing и вашем Image / ImageIcon, помещенном в JLabel , таким образом устранены все проблемы, возникающие из paint / paintComponents ...

2 голосов
/ 22 июля 2011

Чтобы загрузить изображение в память, вы можете использовать ImageIO.read(File). Чтобы отредактировать его впоследствии, получите экземпляр Graphics2D из него, вызвав createGraphics():

BufferedImage img = ImageIO.read(yourFile);
Graphics2D g = img.createGraphics();
// Draw here on the graphics
g.dispose();

Вы даже можете включить сглаживание, установив RenderingHint перед рисованием:

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                   RenderingHints.VALUE_ANTIALIASING_ON);

Затем, чтобы добавить его в JPanel, создайте свой собственный JComponent и добавьте экземпляр этого компонента в свой JPanel:

public class JImageComponent extends JComponent
{
    private BufferedImage img;

    public JImageComponent(BufferedImage bi)
    {
        img = bi;
    }

    @Override
    public void paintComponent(Graphics g)
    {
        g.drawImg(img, 0, 0, this);
    }

}
1 голос
/ 22 июля 2011

Для загрузки изображения вы должны использовать ImageIO объект с методом read(File file) , см. Документы .Затем вы получите BufferedImage экземпляр, из которого вы можете внести свои изменения через Graphics2D экземпляр, который вы получите, вызвав createGraphics() для экземпляра изображения , см. Документы .И последнее, переопределите метод paintComponent() из JPanel или лучше JComponent , см. Документы , и там вы можете нарисовать изображение на экземпляре Graphics, который вы получите в качестве параметра в методе paintComponent(Graphics g)вызов drawImage(Image img, int x, int y, ImageObserver observer) см. документы , где ImageObserver установлено на null.

...