PHP+GD jpeg画像に透過pngを結合したり、文字を載せたりする

楽天出店に向けて、ヤフーショッピングのデータ登録をスピードアップしたい。
まだまだ数千点の商品があるので、「できる限りたくさん登録→楽天に一括移行」みたいなのを考えている。

やりたいこと
・カラー名などを画像に埋め込みたい。
・送料無料などのアイコンを画像に埋め込みたい。

こんな感じのイメージ。
で、ひとまず出来たのでメモ

画像に文字の埋め込み

日本語の場合は、ttfのフリーフォントを用意して埋め込む必要がある。
文字は、右下配置。
画像サイズに応じて、フォントサイズの変更。

// jpg画像読み込み
$img = imagecreatefromjpeg('item.jpg');
$font_color = imagecolorallocate($img, 0, 0, 0);

// 画像サイズを取得する
$sx = imagesx($img);
$sy = imagesy($img);

// TTFフォント
$font_path = "./font/ipaexm.ttf";

// テキスト
$spec_name_size = ceil($sx / 1200 * 60); // 横1200pxの時60px 
$spec_name_marginy = ceil($sx / 1200 * 50); // 横1200の時50 
$spec_name =  "アーミーグリーン";

$marginx = ceil($sx / 1200 * 50); // 1200の時50 

// 右寄せ
$dim = imagettfbbox($spec_name_size, 0, $font_path, $spec_name);
// 幅を計算
$textWidth = $dim[4] - $dim[6];
// 画像の出力位置を計算
$px = $sx - $textWidth - $marginx;
$py = $sy - $spec_name_marginy;

// テキスト描画
imagettftext($img, $spec_name_size, 0, $px, $py, $font_color, $font_path, $spec_name);

header('Access-Control-Allow-Origin: *');
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);

ネットでいろいろ参考にさせてもらって切り貼り。
フォントは、IPAexフォントというのを使わせてもらった。

header('Access-Control-Allow-Origin: *');

が入っているのは、外部サーバーからajaxやcolorboxなどのクロスドメイン対策。
普通はいらない。

画像にアイコンなどを乗せる

元画像はjpg。乗せる画像はロゴや角丸などの透過png。
元画像サイズに合わせて、アイコンも拡大縮小したい。(実際は大きなアイコン画像を用意して縮小のみとなる。)

// jpg画像読み込み
$img = imagecreatefromjpeg('item.jpg');

// 画像サイズを取得する
$sx = imagesx($img);
$sy = imagesy($img);

// 送料無料アイコン
$icon_image = imagecreatefrompng("sendfree.png");
$ix = imagesx($icon_image);
$iy = imagesy($icon_image);

$px = ceil($sx * 0.04); // 4%の余白
$py = ceil($sy * 0.04);

$ratio = $sy * 0.28 / $iy; // 画像(Y)に対して28%のサイズに縮小
$newwidth = ceil($ix * $ratio);
$newheight = ceil($iy * $ratio);

imagecopyresampled($img, $icon_image, $px, $py, 0, 0, $newwidth, $newheight, $ix, $iy);

header('Access-Control-Allow-Origin: *');
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);
imagedestroy($icon_image);

どちらも、かなりイイ!
両方くっつけると、上の画像のようなものが出来上がる。
効率は相当上がりそう。

PHP POSTで大量の変数が送れない

朝、電話で起こされ、やはり小さなトラブルが発生。 ヤマトにアップロードする宛名データ(CSV)がダウ...

ヤフーストア構築開始

まあ、ヤフーストアに売上は期待していないけど、ちょっとした理由で構築を開始。 今までデザインのみ請...

ヤフーショッピング注文APIの詳細取得など@深セン

ヤフーショッピングのAPI周りがなかなか完成していない。 相変わらずの商品数3で、それでも注文が入る...

ヤフーショッピング続き

やっぱ、ヤフオクなんかと違ってかなり簡単だ。 FBAなんかも無い分だけ、AMAZONよりも簡単な気が...

powershell Expand-Archiveが認識されない

以下、自分用メモ メルカリに関してだけど、オークタウンっぽいCSV+画像のZIPデータから自動出品処...

AMAZON ver0.1 FBAラベルを無駄にしないやつ

AMAZONもverつけていこうと思う。 セラーセントラルだとFBAラベルは常に1番目から作られてし...

ヤフーショッピング開店完了

ヤフーストアじゃなくて、ショッピングが正しいなきっと。 ひとまず、開店申請が無事通って、開店までは出...

自分向け簡易モーダルウィンドウ

自分用なのでかなり簡易的に実装 特に中国などは回線状況が悪いので、Ajaxなんかで読み込み中を出さな...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)