javaでダミー画像作成
商用環境のデータをテスト環境へコピーした。
データベースの個人情報にはマスクをした。
何が保存されているかわからない、画像のコンテンツはすべて削除した。
しかし画像コンテンツが何もないと、テストでの表示がうまくいっているのかわからない。
それぞれのデータ用に、ファイル名が書かれたPNGイメージを一括作成した。
java 8 の jjs (Nashorn) で作成した。
var File = Java.type('java.io.File');
var Color = Java.type('java.awt.Color');
var Font = Java.type('java.awt.Font');
var BufferedImage = Java.type('java.awt.image.BufferedImage');
var RenderingHints = Java.type('java.awt.RenderingHints');
var ImageIO = Java.type('javax.imageio.ImageIO');
function createImage(filename) {
var bufferedImage = new BufferedImage(200, 60, BufferedImage.TYPE_INT_RGB);
var graphics2D = bufferedImage.createGraphics();
//
graphics2D.setColor(Color.BLUE);
graphics2D.fillRect(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight());
//
var font = new Font('Consolas', Font.PLAIN, 30);
graphics2D.setFont(font);
graphics2D.setColor(Color.WHITE);
graphics2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
graphics2D.drawString(filename, 5, 40);
// output
ImageIO.write(bufferedImage, "png", new File(filename));
}
createImage('test.png');
概要
1.BufferedImageを作り、そこからGraphics2Dを取り出す。
2.Graphics2Dに対して描画する。
3.ImageIOを利用して、ファイルに書き出す。
これだけ。
簡単にpngを作成できた。
java8だと、ほかにJPGやGIF、BMPが利用できる。
java9だと、TIFFなども利用できる。
しかし、BMPやTIFFはファイルサイズが大きくなるので利用するときはディスク容量に気を付ける必要がある。
また、文字を出力する場合、何も指定しないとアンチエイリアスされず、ギザギザした文字が描画されてしまう。
そこで、RenderingHintを設定して、アンチエイリアスした文字を書き込むようにする。
これで、綺麗な文字が出力される。
- EclipseLinkでJPA
- eclipseの良く使うショートカットキー
- eclipseデフォルトの文字コード
- itext5でPDFを暗号化する
- Java DateFormat
- Java8で指定回数繰り返し
- Java9でJAXB
- JavaでZip圧縮
- javaでイメージフォーマット変換
- javaでファイルの更新日時を変更する
コメントを残す