Php 如何强制所有上传的图像成为JPG

Php 如何强制所有上传的图像成为JPG,php,image,upload,Php,Image,Upload,我已经四处寻找有关这方面的信息,但没有找到我要找的 我有一个网站,用户可以上传一个图像,显示在他们的用户配置文件上 然而,我想做的是能够使上传的每一张照片都成为jpg。我觉得强迫人们只上传JPG文件是不好的,但如果我能让所有文件都成为JPG,那就太好了 以下是用户上载图像时的代码: require('includes/config.php'); // Upload and Rename File if (isset($_POST['submit'])) { $filename =

我已经四处寻找有关这方面的信息,但没有找到我要找的

我有一个网站,用户可以上传一个图像,显示在他们的用户配置文件上

然而,我想做的是能够使上传的每一张照片都成为jpg。我觉得强迫人们只上传JPG文件是不好的,但如果我能让所有文件都成为JPG,那就太好了

以下是用户上载图像时的代码:

require('includes/config.php'); 

// Upload and Rename File

if (isset($_POST['submit']))
{
    $filename = $_FILES["file"]["name"];
    $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
    $file_ext = substr($filename, strripos($filename, '.')); // get file name
    $filesize = $_FILES["file"]["size"];
    $allowed_file_types = array('.jpg','.jpeg','.png','.gif');  

if (in_array($file_ext,$allowed_file_types) && ($filesize < 2000000))
{   
    // Rename file
    $newfilename = ($_SESSION['memberID']) . $file_ext;
    if (file_exists("upload/" . $newfilename))
    {
        // file already exists error
        echo "You have already uploaded this file.";
    }
    else
    {       
        move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $newfilename);
        echo "File uploaded successfully.";     
    }
}
elseif (empty($file_basename))
{   
    // file selection error
    echo "Please select a file to upload.";
} 
elseif ($filesize > 200000)
{   
    // file size error
    echo "The file you are trying to upload is too large.";
}
else
{
    // file type error
    echo "Only these file typs are allowed for upload: " . implode(', ',$allowed_file_types);
    unlink($_FILES["file"]["tmp_name"]);
}
require('includes/config.php');
//上载和重命名文件
如果(isset($_POST['submit']))
{
$filename=$_文件[“文件”][“名称”];
$file_basename=substr($filename,0,stripos($filename,'.');//获取文件扩展名
$file_ext=substr($filename,stripos($filename,'.');//获取文件名
$filesize=$_文件[“文件”][“大小”];
$allowed_file_types=数组('.jpg'、'.jpeg'、'.png'、'.gif');
if(在数组中($file\u ext,$allowed\u file\u types)&&($filesize<2000000))
{   
//重命名文件
$newfilename=($_SESSION['memberID'])。$file\u ext;
如果(文件_存在(“上载/”$newfilename))
{
//文件已存在错误
echo“您已上载此文件。”;
}
其他的
{       
移动上传的文件($上传的文件[“文件”][“tmp\U名称”],“上传/”$newfilename);
echo“文件已成功上载。”;
}
}
elseif(空($file\u basename))
{   
//文件选择错误
echo“请选择要上载的文件。”;
} 
elseif($filesize>200000)
{   
//文件大小错误
echo“您试图上载的文件太大。”;
}
其他的
{
//文件类型错误
echo“仅允许上载这些文件类型:”.inplade(“,”,$allowed\u file\u types);
取消链接($_文件[“文件”][“tmp_名称]);
}

如果有人能建议将上传的文件更改为JPG,请告诉我。

尝试以下代码:
originalImage
是原始图像的路径…
outputImage
可以自我解释。
Quality
是一个从0到100的数字,设置输出JPG质量(0-最差,100-最好)


要强制所有上载的图像为JPG,您应编辑此行
$allowed_file_types=array('.JPG'、'.jpeg'、'.png'、'.gif');
。如果您有兴趣将所有上传内容重新格式化为JPG,您应该将您的问题编辑得非常清楚。我试图在第3段中说明这一点。抱歉。我已更改了最后一行。如果我调用此函数而不是move_uploaded_文件,则可能会重复,那么我如何告诉它将文件放在何处?(假设我就是这么做的)。一旦你有了outputImage,它就是一个JPG,你可以将文件移动到任何你想要的地方。如果文件太大或尺寸不对,你可以显示一个错误/警告。
function convertImage($originalImage, $outputImage, $quality)
{
    // jpg, png, gif or bmp?
    $exploded = explode('.',$originalImage);
    $ext = $exploded[count($exploded) - 1]; 

    if (preg_match('/jpg|jpeg/i',$ext))
        $imageTmp=imagecreatefromjpeg($originalImage);
    else if (preg_match('/png/i',$ext))
        $imageTmp=imagecreatefrompng($originalImage);
    else if (preg_match('/gif/i',$ext))
        $imageTmp=imagecreatefromgif($originalImage);
    else if (preg_match('/bmp/i',$ext))
        $imageTmp=imagecreatefrombmp($originalImage);
    else
        return 0;

    // quality is a value from 0 (worst) to 100 (best)
    imagejpeg($imageTmp, $outputImage, $quality);
    imagedestroy($imageTmp);

    return 1;
}