• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像の縮小のプログラムのエラーについて教えて下さい)

画像の縮小のプログラムのエラーについて

このQ&Aのポイント
  • java初心者の方が画像の縮小のプログラムのエラーについて質問されています。プログラム自体のエラーは表示されないようです。
  • 質問者は他のサンプルコードを参考にしながらプログラムを書いたが、Windowに表示されるのは黒い四角形だけであると述べています。
  • 不具合の原因や修正方法について教えてほしいという質問です。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

Image imgインスタンスに読み込めたなら、Graphicsインスタンス経由でdrawImageすればok , bufimg も同様。 Graphics re_g = re_img.getGraphics(); re_g.drawImage(img, 0, 0, 300, 300, 0, 0, imgw, imgh, this); re_g.dispose();

westwest_2007
質問者

お礼

 mpro-gramさん、回答有難うございました。  何とかうまく実行出来ました。  プログラムを見ながら改めて、再度疑問が湧いてきましたので、宜しくお願いします。  実行の最後で「re_img」がBufferedImageとして保存することは出来るのですが、この時のサイズ は私の書いたプログラムでは、「int re_width=300 , int re_height=300」と設定していますが、 どのサイズで保存されるのでしょうか。  また、「re_g.drawImage(img,・・・・・・,this);」でサイズを指定してBufferedImageを描 画していますが、この時に「int re_width=300 , int re_height=300」との関係はどのような 関係にあるのでしょうか。  実行途中で作成される「bu_g」はどのようなファイルでしょうか、「re_img」との関係はどのような 者でしょうか。  質問ばかりで申し訳ありませんが、宜しくお願いします。

その他の回答 (1)

  • KSOH
  • ベストアンサー率93% (29/31)
回答No.1

スケーリングのソースイメージであるbufimgにイメージデータが設定されていないのが原因だと思います。 もし画面に望みのサイズでイメージを表示したいだけならこういったリサイズ処理は実は自分でやる必要はありません。 drawImage()にはいくつかのバリエーションがありますがその中に、元ネタのイメージの指定領域を画面上に好きなサイズで表示するというのがあります。例えば200x150のイメージがあってそれを300x200で表示したいといった場合、 g.drawImage(image, 0, 0, 300, 200, 0, 0, 200, 150, this); などとすれば自動的にリサイズしたイメージを描画してくれます。詳細はGraphicsのAPI Documentを参照ください。 これを使って書き直すと以下のようになります。 public class ResizedIImage extends Applet { Image img; private MediaTracker tracker; public void init() { setBackground(Color.white); img = Toolkit.getDefaultToolkit().getImage("a.jpg"); tracker = new MediaTracker(this); tracker.addImage(img, 1); try { tracker.waitForID(1); } catch (Exception ex) { ex.printStackTrace(); } } public void paint(Graphics g) { int imgw = img.getWidth(this); int imgh = img.getHeight(this); int dx = 200; int dy = 200; g.drawImage(img, dx, dy, dx+300, dy+300, 0, 0, imgw, imgh, this); } }

westwest_2007
質問者

お礼

 KSOHさん、回答有難うございます。  > スケーリングのソースイメージであるbufimgにイメージデータが設定されていないのが原因だと   思います。  # どこをどのように、プログラムを修正してやればいいのでしょうか。    bufimgを他の個所でも使いたいので、一度どこかに保存してやりたいのです。    宜しくお願いします。

関連するQ&A