楽天出店に向けて、ヤフーショッピングのデータ登録をスピードアップしたい。
まだまだ数千点の商品があるので、「できる限りたくさん登録→楽天に一括移行」みたいなのを考えている。
やりたいこと
・カラー名などを画像に埋め込みたい。
・送料無料などのアイコンを画像に埋め込みたい。
こんな感じのイメージ。
で、ひとまず出来たのでメモ
画像に文字の埋め込み
日本語の場合は、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);
どちらも、かなりイイ!
両方くっつけると、上の画像のようなものが出来上がる。
効率は相当上がりそう。