Php图像创建并上传到文件夹

时间:2017-06-02 13:04:48

标签: php file-upload imagecreatefrompng

我想动态创建图片并将其上传到文件夹。我会根据用户选择动态获取身体,袖子,领子和袖口的图像。我正在合并所有这些图像以创建新图像并将此新图像上载到文件夹中。无法将文件名上传到文件夹,也没有显示错误,但能够生成合并后的图像。

以下是代码,

    <?php
$body = "img1.jpg";
$sleeve = "img2.jpg";
$collar = "img3.jpg";
$cuff = "img4.jpg";
$outputImage = imagecreatetruecolor(800, 800);

$background = imagecolorallocate($outputImage, 0, 0, 0);
imagecolortransparent($outputImage, $background);

$white = imagecolorallocate($outputImage, 255, 255, 255);
imagefill($outputImage, 0, 0, $white);

$first = imagecreatefrompng($body);
$second = imagecreatefrompng($sleeve);
$third = imagecreatefrompng($collar);
$fourth = imagecreatefrompng($cuff);

imagecopyresized($outputImage,$first,0,0,0,0,600,600,600,600);
imagecopyresized($outputImage,$second,0,0,0,0,600,600,600,600);
imagecopyresized($outputImage,$third,0,0,0,0, 600, 600, 600, 600);
imagecopyresized($outputImage,$fourth,0,0,0,0,600,600,600,600);

$filename = round(microtime(true)).'.png';

imagepng($outputImage, $filename);
define('DIR_IMAGE', '/opt/lampp/htdocs/dutees/image/design-uploads/');

$ret = move_uploaded_file($filename, DIR_IMAGE.$filename);
print_r(error_get_last());
if($ret)
{
echo "success";die;
}
else
{
echo "fail";die;
}
imagedestroy($outputImage);
?>echo "fail";die;
}
imagedestroy($outputImage);
?>

3 个答案:

答案 0 :(得分:0)

您正在使用imagepng(),这会将文件保存到您提供的特定位置。

bool imagepng ( resource $image [, mixed $to [, int $quality [, int $filters ]]] ) 的语法:

$to

其中$filename = round(microtime(true)).'.png'; imagepng($outputImage, $filename); define('DIR_IMAGE', '/opt/lampp/htdocs/dutees/image/design-uploads/'); $ret = move_uploaded_file($filename, DIR_IMAGE.$filename); 指的是您要保存图片的位置(包括文件名)。

所以而不是

$filename = round(microtime(true)).'.png';
define('DIR_IMAGE', '/opt/lampp/htdocs/dutees/image/design-uploads/');
imagepng($outputImage, DIR_IMAGE.$filename);

试试这个,

move_uploaded_file()

您不再需要captcha了,因为创建的图片已经在您的服务器中了。
在为新用户创建var myLatLng = {lat: -25.363, lng: 131.044};时我也遇到了类似的问题,并且此解决方案有效。

答案 1 :(得分:0)

move_uploaded_file无法在$filename上使用,因为它不是上传的文件 - 它只是由您的代码创建的。

尝试切换两行(如下所示)并添加路径:

define('DIR_IMAGE', '/opt/lampp/htdocs/dutees/image/design-uploads/');
imagepng($outputImage, DIR_IMAGE . $filename);

然后移除move_uploaded_file行:

//$ret = move_uploaded_file($filename, DIR_IMAGE.$filename);

答案 2 :(得分:-2)

您应该尝试使用file_put_contents而不是move_uploaded_file。

file_put_contents('you_file_location/filename', IMAGE_OBJECT_HERE);

或者您也可以使用fwrite函数保存文件。