Samples > 画像を保存する |
|
画像を保存する画像を保存するには、生成したImageオブジェクトからImageDataを取り出し、ImageLoaderのsaveメソッドで保存します。 Image img = new Image(...); ImageData data = img.getImageData(); ImageLoader loader = new ImageLoader(); loader.data = new ImageData[]{ data }; loader.save("circle.bmp", SWT.IMAGE_BMP); 4行目でImageLoaderにImageDataを与えるわけですが、配列としてデータを代入しています。この理由はアニメーションGIF画像やインターレース形式のJPEG画像ではデータ構造として複数のフレームを持つのでImageDataが配列とて扱われているのです。 ImageLoaderのsave(String filename, int style)メソッドでは、以下の画像フォーマットをサポートしています。2番目の引き数に以下のファイルフォーマットを指定することで、そのフォーマットで画像を保存することが可能です。
サンプルプログラム以下のサンプルはブランクImageにGCで円を描画し、それをビットマップファイルとして保存しています。 ソースコード (SavingImageTest.java)import org.eclipse.swt.widgets.*; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.*; import org.eclipse.swt.layout.*; public class SavingImageTest { public static void main(String[] args) { new SavingImageTest(); } public SavingImageTest() { Display display = new Display(); final Shell shell = new Shell(display); shell.setText("SavingImageTest"); final Image image = new Image(display, 100, 100); GC gc = new GC(image); gc.setBackground(display.getSystemColor(SWT.COLOR_BLUE)); gc.fillOval(10, 10, 80, 80); shell.setLayout(new RowLayout(SWT.VERTICAL)); Canvas c = new Canvas(shell, SWT.BORDER); c.setLayoutData(new RowData(100,100)); c.addPaintListener(new PaintListener(){ public void paintControl(PaintEvent e) { e.gc.drawImage(image, 0, 0); } }); Button b = new Button(shell, SWT.PUSH); b.setText("保存"); b.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e) { ImageData data = image.getImageData(); ImageLoader loader = new ImageLoader(); loader.data = new ImageData[]{data}; loader.save("circle.bmp", SWT.IMAGE_BMP); MessageBox box = new MessageBox(shell, SWT.OK); box.setMessage("画像を保存しました。"); box.setText("画像の保存"); box.open(); } }); shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } } 最新更新日: 2004年1月30日 |
|||||||||||||||||
|
|||||||||||||||||
Copyright(C) 2003,2004 Jasmin Project. All Right Reserved. |
SEO | [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送 | ||