今晩は、ある画像を取込み、4分割に切抜き、ジグソーのようにラベルに張り付けたい
のですが、ラベルに読み込めません。
切り抜いた画像は、最後には、Imageにより、Image型としているのですが、何故読み込め
ないのでしょうか。
CropImageFilterとかCreateImageに加工すると読み込まないのでしょうか。
一枚ものの画像なら、読み込み表示もされますが、分割加工すると何故、Panel,Frameにも
張りつかないのでしょうか。
他に別の画像処理等が必要なのでしょうか、宜しくお願いします。
//=================================================================
public class LabelTest extends JFrame
{
private static final long serialVersionUID = 1L;
public Image img0 ; //元データー
public Image small_img0 ; //元データーを縮小
public ImageFilter fl0 , fl1 , fl2 , fl3 ;
public static int hh = 4 ;
public static Image[] ci = new Image[hh] ;
// FilteredImageの配列
public FilteredImageSource[] fis = new FilteredImageSource[hh] ;
public MediaTracker tracker;
public int w0 , h0 , wp3 , hp3 ;
public ImageIcon smallIcon00 ;
public Image img1 ;
//Constructor
public LabelTest()
{
img0 = Toolkit.getDefaultToolkit().getImage( "a.jpg" ) ;
tracker = new MediaTracker( this ) ;
tracker.addImage( img0 , 0 ) ;
try
{
//イメージのロードが完了するまで待機
tracker.waitForAll( ) ;
}
catch ( Exception ex )
{
ex.printStackTrace() ;
}
syukusyou();
bunkatuKurinuki();
makeCreateImage();
makeMainFrame();
}
//*****End of Constructor******
//*****イメージの縮小******
public void syukusyou()
{
//戻り値はImage型
small_img0 = img0.getScaledInstance
( ( int )( img0.getWidth( this ) * 0.8 ), -1 ,
Image.SCALE_SMOOTH ) ;
tracker.addImage( small_img0 , 0 ) ;
try
{
//イメージのロードが完了するまで待機
tracker.waitForAll( ) ;
}
catch ( Exception ex )
{
ex.printStackTrace() ;
}
}
//*****イメージの切抜(2分割)******
// ImageFilterの作成(fl ⇒ fis ⇒ createImage( fis )をcrpに代入
// ⇒ createImage( fis )をcrpに代入 ⇒ crpからcreateimg ⇒ creatimgをdrawする
// FilteredImageSource , fis0オブジェクトの作成
public void bunkatuKurinuki()
{
//(2分割)
if( small_img0 != null )
{
w0 = small_img0.getWidth( this ) ;
h0 = small_img0.getHeight( this ) ;
wp3 = w0/2 ; // small_img0 横分割
hp3 = h0/2 ; // small_img0 縦分割
}
//くりぬき(2分割)開始、FilteredImageSource , fis0オブジェクトの作成
//くりぬき(2分割)開始、ImageFilter型に返す
fl0 = new CropImageFilter( 0 , 0 , wp3 , hp3 ) ;
fis[0] = new FilteredImageSource( small_img0.getSource() , fl0 ) ;
fl1 = new CropImageFilter( wp3 , 0 , wp3 , hp3 ) ;
fis[1] = new FilteredImageSource( small_img0.getSource() , fl1 ) ;
fl2 = new CropImageFilter( wp3*2 , 0 , wp3 , hp3 ) ;
fis[2] = new FilteredImageSource( small_img0.getSource() , fl2 ) ;
fl3 = new CropImageFilter( 0 , hp3 , wp3 , hp3 ) ;
fis[3] = new FilteredImageSource( small_img0.getSource() , fl3 ) ;
}
// createImage( fis[] ) から"ci[i]" を作成
public void makeCreateImage()
{
for( int i = 0 ; i < hh ; i ++ )
{
//ci[i]:Image型
ci[i] = createImage( fis[i] ) ;
}
for( int j = 0 ; j < hh ; j ++ )
{
tracker.addImage( ci[j] , 0 ) ;
}
}
public void makeMainFrame()
{
JFrame frame = new JFrame() ;
frame.setVisible( true ) ;
Container cnt = frame.getContentPane() ;
JPanel jpanel = new JPanel() ;
cnt.add(jpanel) ;
ImageIcon icon1 = new ImageIcon("ci[0]");
JLabel jlabel0 = new JLabel( icon1 ) ;
jpanel.add(jlabel0) ;
frame.setTitle( "Jigsaw" ) ;
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ) ;
frame.setSize( new Dimension( 400,400 ) ) ;
frame.setLocationRelativeTo( null ) ;
frame.setVisible( true ) ;
}
// main
public static void main( String[] args)
{
LabelTest ap = new LabelTest() ;
}
}
No.1
- 回答日時:
とりあえず
ImageIcon icon1 = new ImageIcon("ci[0]");
はなんか違和感がある. 引数, これでいいんだろうか.
Tacosanさん、回答有難うございます。
実は、
ImageIcon icon1 = new ImageIcon("ci[0]");の部分は、
ImageIcon icon1 = new ImageIcon("ci[0].jpg");とか
ImageIcon icon1 = new ImageIcon(ci[0]);
ImageIcon icon1 = new ImageIcon(ci[0].jpg);
とかで試してはみましたが結果は同じでした。
他にどのような引数にすれば良いのかも思いつきません。
ほとほと困っています、宜しくご教示お願い致します。
No.2ベストアンサー
- 回答日時:
createImage でちょっと調べてみると
createImage を呼び出すタイミングによっては null を返すことがある
って出てくる. 今の場合と引数が違うのではずしてるかもしれんけど例えば
http://hiloshi.nce.buttobi.net/tips/gui/createim …
とか.
一応どこかのドキュメントにも書かれている, らしい.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- HTML・CSS ブロックエディターで作りつつ、画像を挿入しつつ、画像にスタイルシートのコードを付ける方法はありますか 1 2022/08/23 18:46
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java java final 1 2022/06/10 22:49
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- HTML・CSS 【HTML】【CSS】【Swiper】 元の画像は横1200×縦600なのですが、実際のサイト上に反 5 2022/07/16 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ペイントソフトを作っているの...
-
GetDIBits関数の使い方について
-
マルチスレッドプログラムから...
-
JButtonの画像をactionPerforme...
-
C#で別のFormへ複数の値を返そ...
-
エンターキーを押すとOKボタン...
-
Java ボールが動くアニメーション
-
Junitテストでvoid戻り値メッソ...
-
C# LISTBOXの複数項目取得
-
Processingでマウスクリックで...
-
struts2のchainで値の受け渡し...
-
C# visibleプロパティをfalseに...
-
C#で、あるクラスのメンバーす...
-
デスクトップマスコットのドラ...
-
Log4jで機能毎に別ファイルへ出...
-
このプログラミング誰か教えて...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
-
javaで質問です。 文字列2023/2...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
C# 矢印キーの取得
-
Thread.sleepのInterruptedExce...
-
unityでのC++エラーの原因がわ...
-
C#で別のFormへ複数の値を返そ...
-
C# visibleプロパティをfalseに...
-
エンターキーを押すとOKボタン...
-
Processingでマウスクリックで...
-
[C#.net]スレッド化された別フ...
-
C#でキーイベントが発生しない...
-
C# DataGridView列カスタマイズ
-
【C#】ソースコードをファイル...
-
LVM_SETITEMSTATEでListViewの...
-
GetDIBits関数の使い方について
-
未割り当てのローカル変数
-
C# MouseHoverを何度も呼ぶには
おすすめ情報
Tacosanさん、回答有難うございました。
ご指摘の通り addNotify() メソッドの追加で動作確認が出来ました。
有難うございました。
今後ともよろしくお願いたします。