我正在尝试合并两张PNG
张图片。我正在使用这样的imagecopy
函数:
imagecopy($dest, $src, $dest_x / 2 - $src_x / 2, $dest_y / 2 - $src_y / 2, 0, 0, $src_x, $src_y);
现在,我想将此合并的照片保存为我的数据库中的blob
,但代码不起作用。当普通图片大约有14Bytes
时,我的图片会保存为100KB
个对象。
try
{
$stmt = $user->get_db()->prepare("INSERT INTO photos(id_user, src, date) VALUES(:id_user, :src, :date)");
$stmt->bindparam(":id_user", $_SESSION['user_id']);
$stmt->bindparam(":src", $dest);
$stmt->bindparam(":date", date("Y-m-d H:i:s"));
$stmt->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
第一个是成功保存的图像(普通png
图像)
第二个是合并的图像,错误上传
问题是当我上传合并的照片时,因为它没有正确上传。
答案 0 :(得分:1)
我怀疑您的问题是传递$dest
参数不是实际图像。
在imagecopy
:
ob_start();
imagepng($dest);
$image_blob = ob_get_clean();
这应该将图像创建到变量中。
另外,尝试将第3个参数PDO::PARAM_LOB
添加到bind
,即:
$stmt->bindparam(":src", $image_blob, PDO::PARAM_LOB)
在这种情况下,您可以阅读有关PDO Large Objects应该使用它们的更多信息:
大号通常意味着大约4kb或更多"
大型对象本质上可以是文本对象,也可以是二进制对象。
我希望这会有所帮助。