13

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

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

ありがとう。

4

4 に答える 4

24

画像の操作にはIMagick拡張機能を使用することを好みます。GDは、特に大きなファイルの場合、メモリを使いすぎます。PHPマニュアルのCharlesHallによるコードスニペットは次のとおりです

$img = new Imagick();
$img->readImage($src);
$img->setImageCompression(Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(90);
$img->stripImage();
$img->writeImage($dest); 
$img->clean();
于 2012-06-03T12:06:42.557 に答える
22

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
于 2012-06-03T12:20:27.843 に答える
0

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

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

于 2012-06-03T12:02:36.817 に答える
0

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

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

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

于 2015-03-05T04:32:01.690 に答える