これまで「画像掲示板の泉」に投稿された画像のサムネイル作成には、PHPのGDライブラリを使っておりましたが、GDではアニメーションGIFの取り扱いができないため、掲示板スレッドにアニメーションGIFを投稿してもらっても静止GIF画像になってしまっておりました。

そこで、脆弱性に難があることで有名なImageMagickを使って、GIFアニメーションを残しつつサムネイル画像として縮小する方法に変更してみましたので、この記事ではその経緯をご紹介したいと思います。

はじめに

いつもながら本業が忙しく、サイト運用に全く手が回らずの日々が続いてしまいましたが、ふと画像掲示板の泉」を見ると、また荒らし投稿が目につき始めるぐらいに荒れ始めていたので、眠い目をこすりつつサイトメンテナンスをやることにしました。

個人サイトの一番つらいところかもしれないです。

急なPHPのバージョンアップ

メンテナンス作業中、眠さで頭がバカになっていたのか、管理画面でPHPのバージョン変更を何も考えずにやってしまい、PHPをversion 5.xからVersion 7.3に一気上げてしまっておりました。

すると、これまでPHP5.x系に甘えて手抜きをしていた変数宣言あたりが原因となり、dtn.jpサーバ全体にWarningが表示されるようになってしまいました。

慌ててプログラム修正をしておりましたが、途中に何度かお問い合わせまでいただいてしまい大変ご迷惑をお掛けしました。

メンテナンスに合わせて機能追加

Warning潰しもひと段落したので、折角なので何か少しでも機能改良できそうなことはないかと考えまして、ふとやってみたことが画像掲示板の泉でアニメーションgif画像の貼り付けに対応させることでした。

今思えば、PHPのバージョンUPとは全く関係ありませんね。

アニメーションgifのアップロード処理

GIFアニメーションなんて、いつの時代の話をしてるんだと笑う方も多いと思いますが、実はこれまでアニメーションGIF画像を画像掲示板の泉にアップロードをしても、ファイルアップロードは自体は問題なくできおりましたが、サムネイル画像の生成時にアニメーションを残すことができておりませんでした。

GDライブラリでサムネイル生成

画像アップロードをした際に、画像サイズが大きい場合にはサムネイル画像を別途生成していましたが、このサムネイル生成の画像リサイズにはPHPのGDライブラリを使っておりました。

このGDライブラリがgifアニメーションに実は対応しておらず、せっかくアニメーションgifをアップしてもらっても、サムネイル画像ではアニメーションが消えた単なる固定gifファイルになってしまうという問題がありました。

ImageMagickでサムネイル生成

そこで、アニメーションも残しつつリサイズするため、GDでのリサイズをやめてImageMagickを使う方法に変更してしまいました。

ImageMagickとは、100種類以上の画像形式に対して操作が可能なソフトウェアで、ほとんどのレンタルサーバにインストールがされていると思いますが、最近は脆弱性の問題がかなり話題になったりしているため、php.iniで切られていることも多いかもしれません。

私が借りているさくらのレンタルサーバでもImageMagickはデフォルトで切られていたので、 extension=imagick.sophp.iniに追加する必要はあったりしました。

php.ini編集後、無事にPHPからサムネイル画像を生成することができ、GIFアニメーションのアニメーションを残してサムネイル生成をすることができるようになりました。

修正をした画像掲示板の泉のサイトイメージ
アップ最大容量も10MBに変更しました

おわりに

ImageMagickはWEBで取り扱いのある画像のほとんどを操作することができる為、対応画像形式の多さが起因して、脆弱性の問題がでることが多いです。このため、ファイル形式を絞ってサムネイル生成に活用するといった配慮をすれば、そこまで恐れることもないのかとも思います。

アニメーションをGIFはファイル容量が多くなることも多いので、「画像掲示板の泉」のアップロードの画像の最大容量を最大1MBとしていたものを、最大10MBにまでアップしておきました。

iphoneなんかで写真を撮ると、平気で1MBを超える画像が撮れてしまうので、これで多少なりとも使える画像掲示板になったのかとは思います。

ABOUT dtn.jp

この運営ブログをみてdtn.jpの運営サイトに興味をお持ちになった方は下記のリンク集からサイトをご参照ください。PHP・SQL・JS・HTML・CSSや様々なAPIでゼロから立ち上げたサイトを複数運営しています。

dtn.jp関連サイト

  • ディレクトリ型検索エンジンdtn大手サイトは全てサービスを終了し、中小でも運営を継続するところがほとんどなくなってしまったディレクトリ型検索エンジンを2002年から細々運営しており、未だに細かい機能改修も行っております。申請されたサイトは実際に訪問して細かく確認をしているので登録までかなりお時間いただきます。
  • 猫ネコサーチエンジン猫・ペットサイト専用のディレクトリ型検索エンジンです。登録サイトはサイトのスクリーンショット付きでカテゴリに掲載しています。
  • 画像掲示板の泉画像やYouTubeやニコニコ動画が貼り付け可能な匿名画像掲示板です。27ジャンルに分かれた掲示板に、それぞれ100スレッドまで立てることが可能です。
  • ツイータンTwitter APIを使って10分おきに収集したTwitter(ツイッター)のトレンドワードや人気ハッシュタグデータを月別に集計してランキング形式で公開しています。
  • Keyword Tool++Yahoo APIや楽天サイトのデータを日次で収集したデータを元に、EC系キーワードをラインキング形式でご紹介しています。各ワードは検索ボリュームや関連語、24か月の検索ボリュームトレンドを確認も可能です。
  • 消費者金融の泉カードローン商品を取り扱う金融業者を一覧で比較可能としたサイトです。カテゴリ別、人気度別、限度額別、金利別に比較可能なサイトにしています。
  • TrendinGファッションモールに出店するブランドをアイテムヒット率でランキングとしたサイトです。まだβ版です。

各サイトの開発方法などについて

各サイトの開発方法や運用トラブルについては、当ブログで不定期にご紹介しています。Twitterで新着記事のお知らせもしています。宜しければフォロー下さい。