【问题标题】:Can you save an image that you used imagecopyresized() on to MySQL?您可以将使用 imagecopyresized() 的图像保存到 MySQL 吗?
【发布时间】:2011-09-19 03:02:49
【问题描述】:

我一直在尝试多种方法来尝试为我的照片库制作缩略图,但由于我无法在图片为 BLOB 时调整其大小,因此我决定尝试将其保存到 MySQL 作为自己的 BLOB。但是,当我回显它时,它不会让我保存它并且什么也没给我。有什么想法可以将其保存到 MySQL 中吗?

$tmp_img = imagecreatetruecolor($tw,$th);
imagecopyresized($tmp_img, $im, 0, 0, 0, 0, $tw, $th, $size[0],$size[1]);
ob_start();
imagejpeg($tmp_img);
$i=ob_get_clean();
$fp=fopen($nar,'w');
fwrite($fp,$i);
fclose($fp);
$filename_thumb=addslashes(file_get_contents($_FILES['nar']));
mysql_query("INSERT INTO photos (filename,caption,album,thumbl) 
VALUES ('" . $filename . "','" . $caps . "','" . $_POST['albums'] . "','" .  
$filename_thumb . "')") or die(mysql_error());

【问题讨论】:

  • 我建议使用 guid 作为数据库中的文件名将图像存储在磁盘上。你也看过 imagecreatefromstring(),你可能不得不求助于输出缓冲来重新捕获最终的图像数据。

标签: php mysql gd thumbnails


【解决方案1】:

$tmp_img 不是文件名,它是 GD 图像资源。您必须使用imagejpeg()imagepng()imagegif() 之一从中写入图像。

您可以使用临时文件或output buffer 来存储图像数据。

【讨论】:

  • @AndreKR,我用我尝试的方法编辑了问题,但它仍然没有用,看看我做错了什么?
  • 第 6-8 行你想做什么?只需删除它们并将file_get_contents($_FILES['nar']) 替换为$i
  • @AndreKR 谢谢它的工作,对不起其他 fopen() 的东西,我发现的例子表明,每当我查找 fopen() 时,我似乎需要它。非常感谢:D
  • @AndreKR 很抱歉一直打扰您,由于某种原因,图像完全变黑了。你知道为什么吗?
  • imagecopyresized 可能有问题。我建议您发布另一个问题,显示生成$im 的代码并给出$size$th$twvar_dump()。将一张这样的图片放到网上以供下载会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 2020-11-27
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2012-01-24
相关资源
最近更新 更多