勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法

先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Holder.js」ライブラリの利用方法をメモしたが、PHPでも同じようなことをしたい。調べたところ「PHP-Dummy-Image-Generator」というライブラリがファイル1枚で導入可能で使い方も簡単だった。以下に利用方法をメモ。

 

PHP-Dummy-Image-Generator

GitHub

https://github.com/FabianBeiner/PHP-Dummy-Image-Generator/

インストール

image.phpをダウンロードし、サーバにアップロードする。

 

フォントについて

フォントの用意

GitHub上ではRobotoMono-Regular.ttfというフォントが用意されているが、これを使うと日本語が表示できなかった。

そのため適当なフリーフォントのサイトからフォントをダウンロードし、image.phpと同ディレクトリにアップロードしておく。

フォントの適用

image.phpの104行目付近を以下の通り書き換える。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#変更前
$fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . 'RobotoMono-Regular.ttf';
#変更後
$fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . '【アップロードしたフォントファイル名】';
#変更前 $fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . 'RobotoMono-Regular.ttf'; #変更後 $fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . '【アップロードしたフォントファイル名】';
#変更前
$fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . 'RobotoMono-Regular.ttf';

#変更後
$fontFile = realpath(__DIR__) . DIRECTORY_SEPARATOR . '【アップロードしたフォントファイル名】';

 

利用方法

画像の表示

以下のような形でブラウザから開くと画像が表示される筈。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】
https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】
https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】

imgタグで表示したい場合は以下の通り。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<img src="https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】">
<img src="https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】">
<img src="https://test.com/image.php?size=【widthのpx数】x【heightのpx数】&type=【jpg / png / gif】&bg=【背景色のカラーコードをシャープ抜きで記述】&color=【文字のカラーコードをシャープ抜きで記述】&text=【表示したいテキスト】">

画像ダウンロード時のファイル名

imgタグ等で表示し、当該画像を保存するとimage.jpgというようなファイル名になると思うが、このファイル名を変更したい場合はimage.phpの最下部付近に以下のように追記する。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
switch ($type) {
case 'png':
header('Content-Type: image/png');
header('Content-disposition: filename="ファイル名.png"');
imagepng($image);
break;
case 'gif':
header('Content-Type: image/gif');
header('Content-disposition: filename="ファイル名.gif"');
imagegif($image);
break;
case 'jpg':
case 'jpeg':
header('Content-Type: image/jpeg');
header('Content-disposition: filename="ファイル名.jpg"');
imagejpeg($image);
break;
}
switch ($type) { case 'png': header('Content-Type: image/png'); header('Content-disposition: filename="ファイル名.png"'); imagepng($image); break; case 'gif': header('Content-Type: image/gif'); header('Content-disposition: filename="ファイル名.gif"'); imagegif($image); break; case 'jpg': case 'jpeg': header('Content-Type: image/jpeg'); header('Content-disposition: filename="ファイル名.jpg"'); imagejpeg($image); break; }
switch ($type) {
    case 'png':
        header('Content-Type: image/png');
        header('Content-disposition: filename="ファイル名.png"');
        imagepng($image);
        break;
    case 'gif':
        header('Content-Type: image/gif');
        header('Content-disposition: filename="ファイル名.gif"');
        imagegif($image);
        break;
    case 'jpg':
    case 'jpeg':
        header('Content-Type: image/jpeg');
        header('Content-disposition: filename="ファイル名.jpg"');
        imagejpeg($image);
        break;
}

 - PHP

  関連記事

PHP Simple HTML DOM Parserを使用したスクレイピング方法

PHPでスクレイピングする際、preg_match_all等を用いて必要なデータ ...

PHPでランダムなカラーコードを生成する「RandomColor.php」ライブラリの利用方法

PHPでランダムなカラーコードを生成したい。自作するとなると「0~9」「a~f」 ...

フォルダにリンク制限をかける

imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...

smart_resize_imageで縦横の比率関係なく、固定リサイズ

PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...

MySQLとPHPの「image-comparator」ライブラリを使用して類似画像検索を実装する方法

先日PHPで画像を比較して類似度を算出する「image-comparator」ラ ...

S