現在、あるサイトを参考にして class AppCanvas extends Canvas{ BufferedImage image;//ウィンドウに表示するイメージ //コンストラクタ AppCanvas(){ image=loadImage("input.jpg");//表示用のイメージを取り込み } //イメージをファイルから取り込む BufferedImage loadImage(String name){ try{ FileInputStream in=new FileInputStream(name);//FileInputStreamを作る BufferedImage rv=ImageIO.read(in);//イメージを取り込む in.close();//閉じる return rv;//戻り値に読み込んだイメージをセット }catch(IOException e){ //エラー時の処理(エラーを表示)しnullを返す System.out.println("Err e="+e);//エラーを表示 return null;//null を返す } } //表示の必要があれば実行されるメソッド public void paint(Graphics g){ int x2=getWidth();//画面の幅を取得 int y2=getHeight();//画面の高さを取得 int iw=image.getWidth(this);//イメージの幅を取得 int ih=image.getHeight(this);//イメージの高さを取得 int x0=0;//画面左位置 int y0=0;//画面上端位置 int x1=x2/2;//画面中央位置(横) int y1=y2/2;//画5面中央位置(縦) int sX=300;//画像表示開始位置(水平方向) int sY=300;//画像表示開始位置(垂直方向) int eX=600;//画像表示流量位置(水平位置) int eY=600;//画表示終了位置(垂直位置) g.drawImage(image, x0,y0,x1,y1,this);//画面の左上にイメージを縮小して表示 g.drawImage(image,x1,y1,x2,y2,sX,sY,eX,eY,this);//画面右下に一部を拡大して表示 } } // //WindowAdapterは、WindowListerの機能を持ちますが、 //必要なメソッドだけを書けば、WindowListenerとして使えます // class Adapter extends WindowAdapter { //右上の「×」クリックされると呼び出される public void windowClosing(WindowEvent e){ System.exit(0);//アプリの終了 } } というプログラムを書き、添付した画像のように左上に取りこんだinputの画像、 その右下にその一部を拡大したものを表示、というものになっています。 これを用い、inputの画像を魚眼レンズで撮ったような画像にし、右下に表示される拡大されたものを、 魚眼レンズで撮ったような画像から、一般のレンズで撮ったような画像へ変換して表示したいと考えています。 その場合、どのようにソースコードを書き換えればいいでしょうか? ほとんどプログラミング経験がなく、困っています。
↧