😎

【Lravel・PHP】文字列を画像にして保存する!🤗(配列から画像生成も可能)

2022/09/27に公開

はじめに

「文字から画像を生成したい!」
「配列の文字を改行してレイアウトを作成したい!」
「phpで画像の作成から保存までの流れを知りたい😭」

そんな悩みはないでしょうか?

今回はLaravelで文字列から画像を作成して、保存するまでの流れを解説させていただきます!
筆者は、業務でレシートのデータを画像で作成することがあり、その中で知ったことをまとめようと考えたので今回記事にしました。

また配列から画像を作成する方法も解説させていただきます:)

この記事を見るメリット

  • 文字列から画像を生成することができる!
  • 生成した画像を保存することができる!
  • 配列から画像を作成することができる!

対象者

この記事は下記のような人を対象にしています。

  • プログラミング初学者
  • 駆け出しエンジニア
  • 駆け出しWebデザイナー
  • PHPで画像を生成したい人
  • 画像をStorageに保存したい人

結論

以下のコードコピペで作成できます!

$imagePath = "storage/app/testData.png";

$testTexts = [
  '画像作成テスト1!',
  '画像作成テスト2!',
];

// 色情報なしの画像を、作成
// 引数:(幅, 高さ)
$image = imagecreatetruecolor(500, 500);

// 白色の色情報をrgbで定義
// 引数:(画像情報, r, g, b)
$whiteColor = imagecolorallocate($image, 255, 255, 255);

// 画像内の指定した範囲の背景色を四角い白色で塗りつぶす
// 引数:(画像情報, 左上x, 左上y, 右下x, 右下y, 色情報)
imagefilledrectangle($image, 0, 0, 576, 1000, $whiteColor);

// フォントをパスで指定
$font = 'storage/app/fonts/ipag.ttf';

// 改行した時にどれだけ下げるか
$y = 30;

foreach ($testTexts as $text) {
  // 生成した画像に文字を貼り付ける
  // 引数:(画像, フォントサイズ, 文字の角度, x座標, y座標,  文字色, フォント, 貼り付ける文字)
  imagettftext($image, 24, 0, 0, $y, 0x101010, $font, $text);
  // 指定した高さ分y座標を下げることで、改行をする
  $y = $y + 30;
}

// ファイルの種類
header('Content-Type: image/png');
// 画像を指定したパスに作成
imagepng($image, $imagePath);

おわりに

今回は文字列から画像を生成する方法を解説させていただきました!
PHPで画像の処理なども、調べてみるとできてしまうのでまだまだ奥が深いですね...
今後も、業務や学習中に得た知識や、覚えたい知識を記事にしていこうと思います!

最後まで記事を見てくださりありがとうございました。
誤字や脱字、コードのリファクタリングできる箇所などがありましたらコメントくださるとありがたいです!
また、いいねをしてくださると、筆者が喜びます:)

Discussion