Java фотоальбом с использованием GridLayout - PullRequest
2 голосов
/ 02 января 2012

Я хочу сделать простой фотоальбом на Java.Для этого, я думаю, это будет самый простой способ скоординировать изображения с gridlayout.

У меня есть буферизованные изображения моих изображений, я пытаюсь добавить их в gridlayout со следующим кодом,

    BufferedImage a = GUI.createImage(current);
    Image b = Toolkit.getDefaultToolkit().createImage(a.getSource());

    Icon pic = new ImageIcon(b);        
    JButton picB = new JButton("Picture 1", pic );
    selectB.setVerticalTextPosition(AbstractButton.BOTTOM);
    selectB.setHorizontalTextPosition(AbstractButton.CENTER); //aka LEFT, for left-to-right locales
    add(picB);

Я также пытаюсь уменьшить размер буферизованного изображения с помощью следующего кода:

int w = a.getWidth();
    int h = a.getHeight();
    BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    AffineTransform at = new AffineTransform();
    at.scale(0.6, 0.6);
    AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
    after = scaleOp.filter(a, after);

Однако при уменьшении размера изображения я уменьшаю размер кнопок, а изображение большеНе удалось организовать фотографии.

У вас есть предложения или новые решения?

Спасибо.

Ответы [ 2 ]

1 голос
/ 02 января 2012

Спасибо за ответ, я также обработал ситуацию следующим образом:

Вместо использования масштаба я создал новую функцию с именем resize

public static BufferedImage resize(BufferedImage img, int newW, int newH) {
    int w = img.getWidth();
    int h = img.getHeight();
    BufferedImage dimg = dimg = new BufferedImage(newW, newH, img.getType());
    Graphics2D g = dimg.createGraphics();
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
    g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
    g.dispose();
    return dimg;
}

Затем для моего буферизованного изображения с именем bfЯ позвонил resize func и преобразовал его в иконку

bf = resize(bf, bf.getWidth()/3, bf.getHeight()/3);
Image im = Toolkit.getDefaultToolkit().createImage(bf.getSource());
Icon ic = new ImageIcon(im);

Затем я добавил кнопки с изображениями

JButton bt = new JButton("Picture", ic);
bt.setVerticalTextPosition(AbstractButton.BOTTOM);
bt.setHorizontalTextPosition(AbstractButton.CENTER);
add(bt);
1 голос
/ 02 января 2012
picB.setInsets(new Insets(1, 1, 1, 1));

BufferedImage - это тоже изображение, следовательно, b, похоже, не нужно.

С BufferedImage связана графика, поэтому изменение размера можно выполнить следующим образом:

BufferedImage scaled = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
scaled.getGraphics().drawImage(original, 0, 0, width, height, null);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...