1

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

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

4

7 に答える 7

3

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

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


別の解決策は、convertコマンドライン ユーティリティ(ImageMagick に付属しています。PHP 拡張機能とは無関係です)exec呼び出すことです。

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


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

于 2009-09-27T14:39:11.203 に答える
3

GD モジュールまたはImageMagick モジュールを使用して、アップロードされた画像のサイズを変更および縮小できます。

「PHP image resizer」などをグーグルで検索すると、多くの例が見つかります。私は GD を使用する傾向があります。これは、問題なく動作する古いコードを使用しているためです。で見つかった既知のアップロードされた jpeg 画像があると仮定すると$srcImgPath、次のようなことができます。ここで、$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 を非常に簡単に処理することもできます。

于 2009-09-27T14:48:03.473 に答える
1

GD ルートをたどる場合は、imagecopyresampled を使用してください。よりきれいな画像が生成されるためです。つまり、ざらつきやピクセルのように見えないということです。

関数に関する PHP マニュアルへのリンク: http://us2.php.net/manual/en/function.imagecopyresampled.php

于 2009-09-28T02:39:36.313 に答える
1

timthumb.php スクリプトをお勧めします。それは堅実です。 http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/

于 2009-09-28T02:43:54.393 に答える
1

gd ライブラリ、特にimagecopyresized 関数を確認してください

于 2009-09-27T14:40:21.380 に答える
0

Google AppEngineにはPILのサブセットが搭載されていませんか?使用できる「サイズ変更」機能があります...そして何よりも、無料のクォータを取得しています!

于 2009-09-27T17:19:05.810 に答える
0

PHPセットアップにImagickがインストールされている場合。次に、これを行う関数があります。Imagick::thumbnailImage()

Imagick をお持ちでない場合は、GD ライブラリが役に立ちます。彼らはimagcopyresized()を持っているので

于 2009-09-27T14:37:15.740 に答える