GDライブラリを使用して、アップロードされた画像のサムネイル版を自動的に生成しています。適切なimage____()
関数を呼び出して、元の形式と同じ形式で保存します。私のコードはJPEGとGIFでうまく動作しますが、PNGファイルをアップロードすると、サムネイルが無効になります。実際には33バイトしか含まれていません(これまでに試したソースPNGを使用しています)。この画像はブラウザに表示されず、プレビュー(MacOS上)で開くこともできません。PHPのimagepng()メソッドが無効な画像を保存します
は、私が一緒にimagecreatetruecolor()を使用しimagecopyresampled()のように、サムネイルを生成するには:以下
function _resizeImageToFit($resource, $size)
{
$sourceWidth = imagesx($resource);
$sourceHeight = imagesy($resource);
if($sourceWidth >= $sourceHeight) {
// landscape or square
$newHeight = 1.0*$size/$sourceWidth*$sourceHeight;
$newWidth = $size;
}
else {
// portrait
$newWidth = 1.0*$size/$sourceHeight*$sourceWidth;
$newHeight = $size;
}
$thmb = imagecreatetruecolor($newWidth, $newHeight);
imagecopyresampled($thmb, $resource, 0, 0, 0, 0, $newWidth, $newHeight, $sourceWidth, $sourceHeight);
return $thmb;
}
は私のセットアップのバージョン情報である
(これは1.9.4 MAMPバージョンです)ここ
PHPバージョン5.3.2バンドル GD版(2.0.34対応)
は無効発生親指の一例ですネイル画像(PNG):
âPNGIHDRdaØMì∞
あなたは、この関数の戻り値で何をしますか?ファイルシステムに保存するか、直接提供しますか? – dakdad
'$ saveSuccess = $ imagesave($ thumbResource、$ thumbPath、100);の後に' imagedestroy($ thumbResource);が続きます。ここでは画像タイプに基づいて画像関数呼び出しの変数を使用します。これがPNGの場合、呼び出しは 'imagepng()'になります。 $ saveSuccess(imagepngから返された値)は、画像が壊れていても、成功を示すTRUEに設定されています。 –