1

だから私は画像アップロードスクリプトを持っています。画像をアップロードし、サーバー上のスペースに保存します。私が頭を悩ませているように見えないのは、ユーザーが.pngをアップロードしたときに、サーバーに保存するまでにjpgにしたいということです。

誰でもこれを手伝ってもらえますか。まだ何も機能していないので、別の質問に誘導しないでください。これが私のコードの例です。

$name = addslashes($_FILES['image']['name']);
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION); 
$size = $_FILES['image']['size'];
$temp = $_FILES ['image']['tmp_name'];
$error = $_FILES ['image']['error'];

if ($error > 0)
    die("Error uploading file! Code $error.");
else


if ($password == "" || $size > 2000000) {
    move_uploaded_file($temp, $images.$name);   
    mysql_query("INSERT INTO image_approval VALUES ('','$description','','$images$name','',NOW())");

    echo "Upload complete!";
    }else{
echo "Error uploading file";
    }
4

2 に答える 2

1

GDを使用し$images、 が画像を保存するディレクトリ (末尾にスラッシュあり) であり、$name- 元の画像のファイル名であると仮定します。

$destinationPath = $images . basename($name, $ext) . '.jpg';
$source = imagecreatefrompng($images . $name);
imagejpeg($source, $destinationPath, 75);
imagedestroy($source);

またはImagickで:

$image = new Imagick($images . $name);
$image->writeImage($destinationPath);
$image->destroy();
于 2013-01-21T01:43:55.127 に答える
0

この関数を使用して、アップロードされた画像を変換します

// http://stackoverflow.com/a/1201823/358906
// 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);
}

次に、古いイメージを で削除しunlink()ます。

コードは次のようになります。

// After the upload
png2jpg($the_jpg_file_path, $the_png_file_path, 80);
unlink($the_jpg_file_path);
于 2013-01-21T01:46:46.857 に答える