1.画像オブジェクトを作成する
新しい BufferedImage (これは Java で提供されるスレッド クラス ライブラリ パッケージ) によって画像オブジェクトを作成します。この画像には、作成時に 3 つのパラメータ (画像の幅と高さ、フォントの色) が必要です。
// image
BufferedImage image = new BufferedImage(100,40,BufferedImage.TYPE_INT_RGB);
image.getGraphics() を通じてグラフィックを取得します。これは、段階的にペイントするために使用できるブラシとして理解できます。
// 画布
Graphics graphics = image.getGraphics();
2. 画像内にランダムな背景とテキストを描画します
次に、グラフィックを通じて背景を描画できます。
// 设置颜色,默认为黑色
graphics.setColor(Color.cyan);
// 设置背景填充
graphics.fillRect(0,0,100,40);
このようにして、青色の背景を持つ長方形のフレームをブラシで描画します。次に、ランダムなテキストを描画しますが、ランダムなテキストを生成する前に、現在描画されている色を変更する必要があることに注意してください。フォントのスタイルとサイズを同時に変更する
//重新设置画笔的颜色
graphics.setColor(Color.BLACK);
// 设置字体样式及大小
graphics.setFont(new Font("黑体",Font.BOLD,20));
ここでは、ランダムなテキストとしてテキストを書き込むだけです。
// 随机文字库
char[] values = "0123456789abcdefg".toCharArray();
このテキスト ライブラリがあれば、毎回配列の位置をランダム化し、文字を取得し、その文字を画像に描画するだけで済みます。
// 利用文字库生成随机的4位验证码
Random random = new Random();
for (int i=0;i<4;i++){
int index = random.nextInt(values.length);
graphics.drawString(String.valueOf(values[index]),10+24*i,30);
}
3. この画像をローカル ファイルに変換します
次に、ImageIO クラスを使用して、指定したファイルに画像を書き込むだけです。
ImageIO.write(image,"jpg",new File("/Users/zhangyu/Desktop/JavaWeb2/BootAjax/src/main/resources/static/img/abc.jpg"));
次の図は、今回生成されたランダムな QR コードです。