質問

私のサイトのユーザーは、アバターとして使用される画像をアップロードします。アップロード制限サイズを 2 MB に設定しました。ほとんどの場所ではサムネイルのみが必要です。しかし、ユーザーははるかに大きな解像度の画像をアップロードします。私はこれらのファイルをファイル システムに保存します。

大きなサイズのファイルの代わりにサムネイルを作成して保存するにはどうすればよいですか?

役に立ちましたか?

解決

インストール/サーバーの設定に応じて、いくつかの可能性があります。

GD がインストールされていないサーバーを見たことがないと思います。Imagick の場合、デフォルトでインストールされる可能性は低いです :-(


別の解決策は、 変換する コマンドラインユーティリティ (PHP 拡張機能とは関係なく、ImageMagick が付属しています), 、次のようなものを使用します exec それを呼び出すために。

その利点は、次のような制限を受けないことです。 memory_limit, サイズ変更は外部ツールによって実行されるため、ただしもちろん、これはアプリケーションが外部ツールに依存することも意味しますが、これは必ずしも良いことではありません...


必要に応じて、GD に関するチュートリアルがたくさんあります。たとえば、次のようなものに興味があるかもしれません。

他のヒント

あなたは 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は、PHPの設定で

をインストールしている場合。そして、これを行う機能があります。 Imagick :: thumbnailImageに()する

あなたはImagickを持っていない場合は、

、その後、GDライブラリが便利になるだろう。彼らが持っているので imagcopyresized()

PILのサブセットを装着し、GoogleのAppEngineのではないですか?そこに使用することができ「リサイズ」機能がある...と、すべての最高は、あなたが自由にクォータを得ている!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top