web-dev-qa-db-ja.com

PHP)を使用してサーバー上のjpegを圧縮します

約1500枚のJPEG画像があるサイトがあり、それらすべてを圧縮したいと思います。ディレクトリを調べることは問題ではありませんが、すでにサーバー上にあるJPEGを圧縮して(新しいものをアップロードしたくない)、古いものを置き換える機能が見つからないようです。

PHPにはこのための組み込み関数がありますか?そうでない場合、フォルダーからスクリプトにJPEGを読み取るにはどうすればよいですか?

ありがとう。

11
Meir

gdを使用しているかどうかわからないので、これを想定しています。

$img = imagecreatefromjpeg("myimage.jpg");   // load the image-to-be-saved

// 50 is quality; change from 0 (worst quality,smaller file) - 100 (best quality)
imagejpeg($img,"myimage_new.jpg",50);

unlink("myimage.jpg");   // remove the old image
20
user1299518

画像の操作には IMagick 拡張子を使用することをお勧めします。 Gdは、特に大きなファイルの場合、メモリを使いすぎます。これは、PHPマニュアルの Charles Hall によるコードスニペットです:

$img = new Imagick();
$img->readImage($src);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest); 
$img->clean();
22
Emil Vikström

そのためにはphpGdライブラリを使用する必要があります...ほとんどのサーバーにはデフォルトでインストールされています。 'resize image php Gd'を検索すると、多くの例があります。

たとえば、このページをご覧ください http://911-need-code-help.blogspot.nl/2008/10/resize-images-using-phpgd-library.html

0
Neograph734

Vlzvlが提供するソリューションはうまく機能します。ただし、このソリューションを使用すると、コードの順序を変更して画像を上書きすることもできます。

    $image = imagecreatefromjpeg("image.jpg");  
    unlink("image.jpg");
   imagejpeg($image,"image.jpg",50);

これにより、既存の画像を圧縮して、同じファイル名で同じ場所に保存できます。

0
Daniel