「Java/swing/サンプル/画像表示(拡大縮小)」の編集履歴(バックアップ)一覧はこちら

Java/swing/サンプル/画像表示(拡大縮小)」(2023/12/29 (金) 09:45:04) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

Javaのswingで画像を拡大縮小して表示するサンプルです。 * ポイント + ImageIconクラスでアイコンとして画像を読み込みます。 + getScaledInstanceで大きさを変更します。 ++ 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 + MediaTrackerで処理の終了を待ちます。 ++ 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 + JLabelにアイコンを設定します。 大きさを変更するのも意外と簡単です。 * 実行結果 &ref(swing 画像表示サンプル2.png) * ソース &ref(ImageTest2.java) #highlight(java) {{ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.MediaTracker; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSeparator; // swing 画像表示サンプル2 画像を拡大縮小してみよう // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 // ポイント2.getScaledInstanceで大きさを変更します。 // 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 // // ポイント3.MediaTrackerで処理の終了を待ちます。 // 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 // ポイント4.JLabelにアイコンを設定します。 // 大きさを変更するのも意外と簡単です。 public class ImageTest2 extends JFrame { public static void main(String[] args) { new ImageTest2(); } public ImageTest2() { setTitle("swing 画像表示サンプル2 画像を拡大縮小してみよう"); // 今回はレイアウトマネージャを使います setLayout(new FlowLayout()); // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 ImageIcon icon = new ImageIcon("logo3w.png"); MediaTracker tracker = new MediaTracker(this); // ポイント2.getScaledInstanceで大きさを変更します。 Image smallImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 0.5), -1, Image.SCALE_SMOOTH); Image bigImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 1.5), -1, Image.SCALE_SMOOTH); // ポイント3.MediaTrackerで処理の終了を待ちます。 tracker.addImage(smallImg, 1); tracker.addImage(bigImg, 2); ImageIcon smallIcon = new ImageIcon(smallImg); ImageIcon bigIcon = new ImageIcon(bigImg); try { tracker.waitForAll(); } catch (InterruptedException e) { System.out.println("なんかエラーでた。"); } // ポイント4.JLabelにアイコンを設定します。 JLabel l = new JLabel("0.5", smallIcon, JLabel.LEFT); JLabel ll = new JLabel("1.0", icon, JLabel.LEFT); JLabel lll = new JLabel("1.5", bigIcon, JLabel.LEFT); // 関係ないポイント // 横幅の大きなJseparatorを差し込むと、JFlowLayoutの強制改行みたいな事ができます JSeparator sp = new JSeparator(); JSeparator sp2 = new JSeparator(); sp.setPreferredSize(new Dimension(5000, 0)); sp2.setPreferredSize(new Dimension(5000, 0)); add(l); add(sp); add(ll); add(sp2); add(lll); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100, 100, 500, 350); setVisible(true); } } }} * コメント(バグ、間違い、こんな情報が欲しい等ありましたら) #pcomment(reply) * アンケート(このページの情報はお役に立ちましたか?) #tvote("役に立った[63]","役に立たない[15]","分かりにくい[25]","間違っている[0]")
Javaのswingで画像を拡大縮小して表示するサンプルです。 * ポイント + ImageIconクラスでアイコンとして画像を読み込みます。 + getScaledInstanceで大きさを変更します。 ++ 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 + MediaTrackerで処理の終了を待ちます。 ++ 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 + JLabelにアイコンを設定します。 大きさを変更するのも意外と簡単です。 * 実行結果 &ref(swing 画像表示サンプル2.png) * ソース &ref(ImageTest2.java) #highlight(java) {{ import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Image; import java.awt.MediaTracker; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSeparator; // swing 画像表示サンプル2 画像を拡大縮小してみよう // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 // ポイント2.getScaledInstanceで大きさを変更します。 // 幅と高さともに同じ倍率にする場合、高さは-1にしてもいいです。 // // ポイント3.MediaTrackerで処理の終了を待ちます。 // 画像の加工は、加工完了する前に処理が戻ってくるので、waitForAll()などで処理の終了を待機する必要がある…らしいです。 // ポイント4.JLabelにアイコンを設定します。 // 大きさを変更するのも意外と簡単です。 public class ImageTest2 extends JFrame { public static void main(String[] args) { new ImageTest2(); } public ImageTest2() { setTitle("swing 画像表示サンプル2 画像を拡大縮小してみよう"); // 今回はレイアウトマネージャを使います setLayout(new FlowLayout()); // ポイント1.ImageIconクラスでアイコンとして画像を読み込みます。 ImageIcon icon = new ImageIcon("logo3w.png"); MediaTracker tracker = new MediaTracker(this); // ポイント2.getScaledInstanceで大きさを変更します。 Image smallImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 0.5), -1, Image.SCALE_SMOOTH); Image bigImg = icon.getImage().getScaledInstance((int) (icon.getIconWidth() * 1.5), -1, Image.SCALE_SMOOTH); // ポイント3.MediaTrackerで処理の終了を待ちます。 tracker.addImage(smallImg, 1); tracker.addImage(bigImg, 2); ImageIcon smallIcon = new ImageIcon(smallImg); ImageIcon bigIcon = new ImageIcon(bigImg); try { tracker.waitForAll(); } catch (InterruptedException e) { System.out.println("なんかエラーでた。"); } // ポイント4.JLabelにアイコンを設定します。 JLabel l = new JLabel("0.5", smallIcon, JLabel.LEFT); JLabel ll = new JLabel("1.0", icon, JLabel.LEFT); JLabel lll = new JLabel("1.5", bigIcon, JLabel.LEFT); // 関係ないポイント // 横幅の大きなJseparatorを差し込むと、JFlowLayoutの強制改行みたいな事ができます JSeparator sp = new JSeparator(); JSeparator sp2 = new JSeparator(); sp.setPreferredSize(new Dimension(5000, 0)); sp2.setPreferredSize(new Dimension(5000, 0)); add(l); add(sp); add(ll); add(sp2); add(lll); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100, 100, 500, 350); setVisible(true); } } }} * コメント(バグ、間違い、こんな情報が欲しい等ありましたら) #pcomment(reply) * アンケート(このページの情報はお役に立ちましたか?) #tvote("役に立った[64]","役に立たない[15]","分かりにくい[25]","間違っている[0]")

表示オプション

横に並べて表示:
変化行の前後のみ表示: