我的问题是不仅要在我的数据库中将当前画布作为 JSON 对象上传,我还想从画布中保存缩略图。这是一种布局画廊。
几乎所有东西都在工作,除了特定大小的比例。我将本教程用于 PHP 函数function scaleImg();
Scale Image with PHP
所以这是我上传脚本中的代码:
layoutupload.php
...
//Save canvas as thumbnail
//datafields
$lt_dir = "../flyer/templateDATA/template_1_thumbs/";
$lt_canvas_thumb = $_POST['lt_canvas_thumb'];
//delete header
$lt_canvas_thumb = str_replace('data:image/png;base64,','', $lt_canvas_thumb);
$lt_canvas_thumb = str_replace(' ', '+', $lt_canvas_thumb);
//decode to an image
$img_data = base64_decode($lt_canvas_thumb);
$file = $lt_dir.'tmp.png';
//save in filesystem
$success = file_put_contents($file, $img_data);
print $success ? $file : 'Unable to save the file.';
//scale img with helper class
include "helper_scaleImg.php";
scaleImg($file,100,141,'png'); // ($img,$width,$height,$type)
...
这var lt_canvas_thumb = canvas.toDataURL("image/png");
来自一个 JavaScript 函数
,我可以将图像保存在文件系统上,但只能使用原始画布尺寸 (370x522)。
这是用于缩放的 PHP 脚本
function scaleImg($img, $width, $height, $type){
//$type = exif_imagetype($img);
//Possible types
//IMAGETYPE_JPEG
//IMAGETYPE_PNG
if($type == 'jpg'){
$source_image = imagecreatefromjpeg($img);
// Get the size of img
$source_imagex = imagesx($source_image); //width
$source_imagey = imagesy($source_image); //height
// destination image
$dest_imagex = $width;
$dest_imagey = $height;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
//best quality (slow)
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0,
$dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
return imagejpeg($dest_image,NULL,100);
}
else if($type == 'png'){
$source_image = imagecreatefrompng($img);
if(!$source_image){
// Get the size of img
$source_imagex = imagesx($source_image); //width
$source_imagey = imagesy($source_image); //height
// destination image
$dest_imagex = $width;
$dest_imagey = $height;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
//best quality (slow)
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0,
$dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
/* Output an error message */
imagestring($source_image, 1, 5, 5, 'Error loading ' . $img);
}
return imagepng($dest_image,NULL,9);
//return $dest_image;
}
else
{
echo "Invalid image type!";
exit;
}
}
我收到以下错误消息:
数据:../flyer/templateDATA/template_1_thumbs/tmp.png
警告:imagepng() 期望参数 1 是资源,在第57行的/Applications/XAMPP/xamppfiles/htdocs/flyer/helper_scaleImg.php中给出了 null
我不知道为什么它是“null”,因为文件已正确保存在我的目录中。
我希望这不是我的代码中的一个小错误,我希望有人可以帮助我。谢谢!问候马克斯