私は高品質のPNGファイルの束を持っています。 PHPを使ってJPGに変換したいのですが、それはファイルのサイズを小さくして品質を維持するからです。 Web上にJPGファイルを表示したいPHPを使用してPNGを圧縮してJPGに変換しますか?
PHPにはこれを行うための関数/ライブラリがありますか?品質/圧縮は良いですか?
私は高品質のPNGファイルの束を持っています。 PHPを使ってJPGに変換したいのですが、それはファイルのサイズを小さくして品質を維持するからです。 Web上にJPGファイルを表示したいPHPを使用してPNGを圧縮してJPGに変換しますか?
PHPにはこれを行うための関数/ライブラリがありますか?品質/圧縮は良いですか?
変換する項目に注意してください。 JPGはPNGの処理中にアルファ透明度をサポートしていません。あなたはその情報を失います。
が// Quality is a number between 0 (best compression) and 100 (best quality)
function png2jpg($originalFile, $outputFile, $quality) {
$image = imagecreatefrompng($originalFile);
imagejpeg($image, $outputFile, $quality);
imagedestroy($image);
}
この関数はGDライブラリからimagecreatefrompng()
とimagejpeg()
機能を使用しています:変換するには
は、次の機能を使用することができます。
PNGをJPGに安全に変換するためのdanLeonの回答をご覧ください。 – Codemole
この回答は透過性のあるpngファイルでは機能しません。 –
PHPにはimage processing functionsとimagecreatefrompng
とimagejpeg
functionがあります。最初はPNG画像ファイルの内部表現を作成し、2番目はその表現をJPEG画像ファイルとして保存するために使用されます。
Image Magickを調べるとよいでしょう。通常、画像処理のための事実上の標準ライブラリとみなされます。デフォルトのインストールで/が利用可能かどうかは不明ですが、追加のPHPモジュールをインストールする必要があります。
HTH。
this list of php image librariesを参照してください。基本的にはGDかImagemagickです。
これは70%の画質で「image.jpg」に「image.png」を変換する小さな例です。
<?php
$image = imagecreatefrompng('image.png');
imagejpeg($image, 'image.jpg', 70);
imagedestroy($image);
?>
希望
を助け、私はそれは正確ではないことを知っていますOPへの回答ですが、回答は既に与えられています。
本当にこれはPHPで行う必要がありますか?
は、私は何を意味している:あなたが最良の方法ではないかもしれないPHPでそれをやって、画像の多くを変換する必要がある場合:あなたはmemory_limit
、max_execution_time
に直面するだろう、...
私も言いますGDはあなたに最高の品質/サイズ比を与えないかもしれません。それについてはよく分からない
別のアプローチ(あなたはGDと他のソリューションとの比較をすれば、私は結果;-)によって非常に興味があります)、PHPを使用していない、コマンドライン経由Image Magickを使用することです(そして他の人のようなPHP拡張機能が示唆されていないとして)
あなたはすべての.png
ファイルを経由するシェルスクリプトを書く必要があるだろう、と彼らは
:あなたは本番サーバー上で直接これをやっている場合、あなたはそれが少し時々^^
をクールダウンさせるために、変換の房の間にいくつかの睡眠時間を置くことができます私は+ convert
/mogrify
数回(彼らは10時間のようなもの1回実行した)シェルスクリプトを使用してきた、と彼らは
<?php
function createThumbnail($imageDirectory, $imageName, $thumbDirectory, $thumbWidth) {
$explode = explode(".", $imageName);
$filetype = $explode[1];
if ($filetype == 'jpg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'png') {
$srcImg = imagecreatefrompng("$imageDirectory/$imageName");
} else
if ($filetype == 'gif') {
$srcImg = imagecreatefromgif("$imageDirectory/$imageName");
}
$origWidth = imagesx($srcImg);
$origHeight = imagesy($srcImg);
$ratio = $origWidth/$thumbWidth;
$thumbHeight = $origHeight/$ratio;
$thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $origWidth, $origHeight);
if ($filetype == 'jpg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'png') {
imagepng($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'gif') {
imagegif($thumbImg, "$thumbDirectory/$imageName");
}
}
?>
0 :-)本当によく仕事をします
これは非常に優れたサムネイルスクリプト=) ここに例があります:
$ path =元の画像があるフォルダへのパス。 $ name =サムネイルを作成するファイルのファイル名。 $ thumbpath =サムネイルを保存するディレクトリへのパス。 $ maxwidth = PXのサムネイルの最大幅。 100(100pxになります)。
createThumbnail($path, $name, $thumbpath, $maxwidth);
私はこれを使用し、それはうまくいった、ありがとう! – user1053263
白の透明性と安全JPGにPNGを変換するために、これを行います。
$image = imagecreatefrompng($filePath);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);
$quality = 50; // 0 = worst/smaller file, 100 = better/bigger file
imagejpeg($bg, $filePath . ".jpg", $quality);
imagedestroy($bg);
画像の種類によっては、JPGのファイルサイズがPNGよりも小さいとは限りませんので、あなたの状況に合ったものを使用していることを確認してください。 http://lbrandy.com/blog/2008/10/my-first-and-last-webcomic/ – jimyi