ユーザーのアバターのサイズを小さくしますか?- サムネイルの作成
-
18-09-2019 - |
質問
私のサイトのユーザーは、アバターとして使用される画像をアップロードします。アップロード制限サイズを 2 MB に設定しました。ほとんどの場所ではサムネイルのみが必要です。しかし、ユーザーははるかに大きな解像度の画像をアップロードします。私はこれらのファイルをファイル システムに保存します。
大きなサイズのファイルの代わりにサムネイルを作成して保存するにはどうすればよいですか?
解決
インストール/サーバーの設定に応じて、いくつかの可能性があります。
- を使用できます GDライブラリ, 、そしてそのようなもの
imagecopyresized
関数 - または、
Imagick extension
, 、そしてそのようなものthumbnailImage
方法。
GD がインストールされていないサーバーを見たことがないと思います。Imagick の場合、デフォルトでインストールされる可能性は低いです :-(
別の解決策は、 変換する コマンドラインユーティリティ (PHP 拡張機能とは関係なく、ImageMagick が付属しています), 、次のようなものを使用します exec
それを呼び出すために。
その利点は、次のような制限を受けないことです。 memory_limit
, サイズ変更は外部ツールによって実行されるため、ただしもちろん、これはアプリケーションが外部ツールに依存することも意味しますが、これは必ずしも良いことではありません...
必要に応じて、GD に関するチュートリアルがたくさんあります。たとえば、次のようなものに興味があるかもしれません。
- PHPとgdでサムネイルを作成する方法 :バッチプロセスを使用して、多くの画像のサムネイルを生成します。これは、すでに持っているすべての画像のサムネイルを生成する必要がある場合に便利です。
- PHP を使用したサムネイル生成チュートリアル :元の画像を中央に配置し、背景色を追加して正方形のサムネイルを作成するなど、あまり見られない機能を実行します。
他のヒント
あなたは GDモジュールのか<のhref = "http://php.net/を使用することができますimagick」REL = "nofollowをnoreferrer">任意のアップロード画像のサイズを変更し、縮小するのImageMagickのモジュール
あなたは「PHPの画像サイズ変更」のようなもののために周りのグーグル場合は、、あなたは多くの例を見つけることができます。私はうまく動作します周り蹴りコードの古いビットを持っているように、GDを使用する傾向があります。あなたは$srcImgPath
で発見知られてアップロードされたJPEG画像を持っていると仮定すると、あなたは$newWidth
と$newHeight
が必要なイメージの新しいサイズです、次のようなものを、行うことができます:
list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);
などの適切な官能化、および$quality
を指定してください。あなたにも非常に簡単にGIFやPNG画像を処理するために出て、このコードを抽象化することができます。
具体的には、GDライブラリをチェックしてください imagecopyresized機能する
ただ、簡単なメモそれはクリーナー探して画像を生成するように、あなたはGDのルートを下る場合、imagecopyresampled使用します。それによって、私はそれがのように粗くおよび/またはpixely見えないという意味でます。
機能上のPHPマニュアルへのリンク:ます。http:// US2。 php.net/manual/en/function.imagecopyresampled.phpする
私はtimthumb.phpスクリプトをお勧めします。それは岩の固体です。 http://www.darrenhoyt.com/2008/04 / 02 / timthumb-PHPスクリプトリリース/ の
をインストールしている場合。そして、これを行う機能があります。 Imagick :: thumbnailImageに()する
あなたはImagickを持っていない場合は、、その後、GDライブラリが便利になるだろう。彼らが持っているので imagcopyresized()の
PILのサブセットを装着し、GoogleのAppEngineのではないですか?そこに使用することができ「リサイズ」機能がある...と、すべての最高は、あなたが自由にクォータを得ている!