我想用固定大小(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);
答案 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);
}