所以,我有这个班的半工作。 不知何故,我无法复制上传图像的重新调整大小的样本,只能复制具有“正确”尺寸的黑色“正方形”(螺丝尺寸,只要拇指显得清晰。当时只有一步)。
我为WOT感到抱歉,但它正在驱使我克雷克雷。 提前谢谢。
<?php
class Upload {
#function from http://stackoverflow.com/a/10666106/587811
public function resize_values($origWidth,$origHeight,$maxWidth = 200,$maxHeight = 200){
#check for longest side, we'll be seeing that to the max value above
if($origHeight > $origWidth){ #if height is more than width
$newWidth = ($maxHeight * $origWidth) / $origHeight;
$retval = array(width => $newWidth, height => $maxHeight);
}
else{
$newHeight= ($maxWidth * $origHeight) / $origWidth;
$retval = array(width => $origWidth, height => $newHeight);
}
return $retval;
}
public function image($picurl, $file, $path="images/uploaded/") {
echo "function chamada!";
if ($picurl) {
$picFileName=rand(1,9999).$_SESSION['id'];
$picExt=substr(strstr($picurl,'.'),1,3);
$picExt=strtolower($picExt);
$allowed = array("jpg","png","gif","bmp");
if (in_array($picExt,$allowed)) {
if (getimagesize($file)) {
$picNewName=str_replace(" ","_",$picFileName.'.'.$picExt);
$picWhereTo=$path.$picNewName;
$copy=move_uploaded_file($file, $picWhereTo);
if ($copy) {
list($width, $height) = getimagesize($picWhereTo);
$size = $this->resize_values($width,$height,250,250);
$thumb = imagecreatetruecolor($size['width'],$size['height']);
imagealphablending($thumb, false);
$source = imagecreatefromjpeg($picWhereTo);
imagecopyresized($thumb,$source,0,0,0,0,$size['width'],$size['height'],$width,$height);
$picNewName=$picFileName.'_thumb.'.$picExt;
imagejpeg($thumb,$path.$picNewName);
$picinfo['where']=$picWhereTo;
$picinfo['name']=$picNewName;
return $picinfo;
}
else return false;
}
else return false;
}
else return false;
}
}
}
?>
答案 0 :(得分:1)
我遇到了类似这样的问题。这与png的透明度有关。
使用imagecreatetruecolor();
创建$ thumb后,给它一个镜头imagealphablending($thumb, false);
我不完全确定这是解决方案 - 但我认为它正沿着正确的轨道前进。你的真实颜色支持alpha混合 - 它在jpeg的背景中混合 - 它可能会因缺乏信息而混淆。
如果这不起作用,请描述您上传的确切图片格式,以便我们可以尝试一下,看看会发生什么。
答案 1 :(得分:1)
更改您的
$source = imagecreatefromjpeg($file);
到
$source = imagecreatefromjpeg($picWhereTo);
这就是你调用函数的方法
$objoflclass->image($_FILES['img']['name'],$_FILES['img']['tmp_name'],'');
其中$ _FILES ['img']是图片上传字段的名称,我相信你可以理解这是什么问题