微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如何制作不同尺寸/大小的单个图像

实际上,我想要的是,当我上传1张图片时,原始图片将存储在upload / og /中.但我也想要不同尺寸的图像,如1366×768,1280 * 600,768×1024等…不仅仅是这些尺寸,它将与图像成比例.

我有一个代码,它将该图像转换为拇指与比率,这适用于max-width = 300和max-height = 600.

define ("MAX_SIZE","100");
define ("WIDTH","300");
define ("HEIGHT","600");
function make_thumb($img_name,$filename,$new_w,$new_h)
{
    $ext=getExtension($img_name);
    if(!strcmp("jpg",$ext) || !strcmp("jpeg",$ext))
        $src_img=imagecreatefromjpeg($img_name);
    if(!strcmp("png",$ext))
        $src_img=imagecreatefrompng($img_name);

    //gets the dimmensions of the image
    $old_x=imageSX($src_img);
    $old_y=imageSY($src_img);

    // next we will calculate the new dimmensions for the thumbnail image
    $ratio1=$old_x/$new_w;
    $ratio2=$old_y/$new_h;
    if($ratio1>$ratio2) {
        $thumb_w=$new_w;
        $thumb_h=$old_y/$ratio1;
    }
    else {
        $thumb_h=$new_h;
        $thumb_w=$old_x/$ratio2;
    }
    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
    imagecopyresampled($dst_img,$src_img,$thumb_w,$thumb_h,$old_x,$old_y); // resize the big image to the new created one

    if(!strcmp("png",$ext)) // output the created image to the file. Now we will have the thumbnail into the file named by $filename
        imagepng($dst_img,$filename);
    else
        imagejpeg($dst_img,$filename);

    imagedestroy($dst_img);
    imagedestroy($src_img);
}
function getExtension($str) {
    $i = strrpos($str,".");
    if (!$i) { return ""; }
    $l = strlen($str) - $i;
    $ext = substr($str,$i+1,$l);
    return $ext;
}

$errors=0;
if(isset($_POST['submit']))
    {
    //reads the name of the file the user submitted for uploading
    $image=$_FILES['scrnsots']['name'];
    if ($image)
    {
        $filename = stripslashes($_FILES['scrnsots']['name']);
        // get the extension of the file in a lower case format
        $extension = getExtension($filename);
        $extension = strtolower($extension);
        // if it is not a kNown extension,we will suppose it is an error,print an error message
        //and will not upload the file,otherwise we continue
        if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png"))
        {
            echo 'Nown extension!timagesize($_FILES['scrnsots']['tmp_name']);
            $sizekb=filesize($_FILES['scrnsots']['tmp_name']);
            if ($sizekb > MAX_SIZE*102400)
            {
                echo 'copied = copy($_FILES['scrnsots']['tmp_name'],$newname);
            if (!$copied)
            {
                echo 'copy unsuccessfull!dismiss='alert' aria-label='close'>×

但它只会创建拇指.我想要1个不同的图像 – 尺寸(高度 – 宽度).

最佳答案
评论所述,您实际上只需将最后一部分(函数)放在循环中,并使用mkdir()添加一些目录创建逻辑.还有一个本机函数提取名为pathinfo()的扩展,所以只使用那个而不是你拥有的那个:

function make_thumb($img_name,$new_h)
    {
        $ext=getExtension($img_name);
        if(!strcmp("jpg",$ext))
            $src_img=imagecreatefromjpeg($img_name);
        if(!strcmp("png",$ext))
            $src_img=imagecreatefrompng($img_name);

        $old_x=imageSX($src_img);
        $old_y=imageSY($src_img);

        $ratio1=$old_x/$new_w;
        $ratio2=$old_y/$new_h;
        if($ratio1>$ratio2) {
            $thumb_w=$new_w;
            $thumb_h=$old_y/$ratio1;
        }
        else {
            $thumb_h=$new_h;
            $thumb_w=$old_x/$ratio2;
        }
        $dst_img = ImageCreateTrueColor($thumb_w,$thumb_h);
        imagecopyresampled($dst_img,$old_y); // resize the big image to the new created one

        if(!strcmp("png",$ext)) // output the created image to the file. Now we will have the thumbnail into the file named by $filename
            imagepng($dst_img,$filename);
        else
            imagejpeg($dst_img,$filename);

        imagedestroy($dst_img);
        imagedestroy($src_img);
    }

if(!empty($_FILES)) {
    $errors=0;
    if($_POST['submit']) {
        if($_FILES['scrnsots']['error'] == 0) {
            $image  =   $_FILES['scrnsots']['name'];
            $filename = stripslashes($_FILES['scrnsots']['name']);
            $extension = pathinfo($filename,PATHINFO_EXTENSION);
            $extension = strtolower($extension);
            if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png")) {
                echo 'Nown extension!timagesize($_FILES['scrnsots']['tmp_name']);
                $sizekb =   filesize($_FILES['scrnsots']['tmp_name']);
                if ($sizekb > MAX_SIZE*102400) {
                    echo 'copy()
                if (!move_uploaded_file($_FILES['scrnsots']['tmp_name'],$newname)) {
                    echo 'copy unsuccessfull!

原文地址:https://www.jb51.cc/html/425550.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐