PHP将从imagecopy创建的图像保存为blob

时间:2017-05-04 17:00:05

标签: php sql image png

我正在尝试合并两张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();
   }

Images in DB

第一个是成功保存的图像(普通png图像) 第二个是合并的图像,错误上传 问题是当我上传合并的照片时,因为它没有正确上传。

1 个答案:

答案 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或更多"

     

大型对象本质上可以是文本对象,也可以是二进制对象。

我希望这会有所帮助。