将图像调整为固定大小并保持原始图像大小

时间:2017-07-17 21:32:37

标签: php

我想用固定大小(400 * 320)的用户上传图片创建缩略图 保存在缩略图文件夹中,当用户单击缩略图时,原始图像的副本将被发送到上传文件夹。原始图像出现,但原始图像上传的代码问题与缩略图的大小相同,请问任何解决方案?

以下是代码:

function ak_img_resize($target, $newcopy, $w, $h, $ext) {
    list($w_orig, $h_orig) = getimagesize($target);

    $img = "";
    $ext = strtolower($ext);
    if ($ext == "gif"){ 
      $img = imagecreatefromgif($target);
    } else if($ext =="png"){ 
      $img = imagecreatefrompng($target);
    } else { 
      $img = imagecreatefromjpeg($target);
    }
    $w = 400;
    $h = 320;
    $tci = imagecreatetruecolor($w, $h);
    // imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h)
    imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);
    imagejpeg($tci, $newcopy, 90);

1 个答案:

答案 0 :(得分:0)

大概是你通过这个功能放原版,也许这是因为你试图压缩它或其他什么,但如果你想让原版保持其原始尺寸,只需将上传的文件移动到它必须去的地方首先,然后在移动该文件成功时,从该移动的文件中制作缩略图副本。

如果您想通过功能放置原始图像文件,缩小质量等等,请尝试进行这些调整:

class IndexView(TemplateView):
    newhit = HitCounter.objects.create()  # remove this line
    ...

使用:

# Notice the re-organizing of the params--------vv----------vv
function ak_img_resize($target, $newcopy, $ext, $w = false, $h = false)
    {
        list($w_orig, $h_orig) = getimagesize($target);
        # If you keep the width empty, take original size
        if(empty($w))
          $w    =   $w_orig;
        # If you keep the height empty, take original size
        if(empty($h))
          $h    =   $h_orig;

        $img = "";
        $ext = strtolower($ext);
        if ($ext == "gif"){ 
          $img = imagecreatefromgif($target);
        } else if($ext =="png"){ 
          $img = imagecreatefrompng($target);
        } else { 
          $img = imagecreatefromjpeg($target);
        }
        $tci = imagecreatetruecolor($w, $h);
        // imagecopyresampled(dst_img, src_img, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h)
        imagecopyresampled($tci, $img, 0, 0, 0, 0, $w, $h, $w_orig, $h_orig);
        imagejpeg($tci, $newcopy, 90);
    }