【问题标题】:Reading image from a local temporary file using php使用php从本地临时文件中读取图像
【发布时间】:2013-09-30 15:57:54
【问题描述】:

场景:之前我直接读取图片的 url 并将图片调整为 4 种不同的大小。但我有执行超时。现在我读取 url 并将其复制到一个临时文件夹中,并将本地临时文件夹中的图像传递给 imagecreatefromjpeg()。

protected static function saveImage($row,$url){
    $percent = 1.0; 
    $imagethumbsize = 200;
    $db = PJFactory::getDbo();
    $details = $db->getImageDetails();
    $max = sizeof($details);
    $tempfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."temp".DS.$row['CategoryID'].".jpg"; 
    $tempcopy = copy($url,$tempfilename);
   foreach ($details as $array) {
    $new_width=$array[2];
    $new_height=$array[3];
    $newfilename = "C:".DS."xampp".DS."htdocs".DS."opg-uat".DS."img".DS."c".DS.$row['CategoryID']."-".$array[1].".jpg"; 
    $image_p = imagecreatetruecolor($new_width, $new_height);
    $image = imagecreatefromjpeg($tempfilename);
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
    imagejpeg($image_p, $newfilename);
 }
 }

错误:图像正确保存在临时文件夹中。但是在目标文件夹中创建了所有大小的图像,但图像看起来只有黑色。 (没有得到实际图像)。我猜从本地读取的文件有一些问题。 有什么想法吗?

提前致谢。

【问题讨论】:

  • 您是否正在阅读仅是 JPG 文件的图像?
  • $details = $db->getImageDetails(); 怎么知道要检查哪个图像的大小?另外,在这之后,var_dump($array) 会显示什么?
  • getImageDetails 是我从 db 编写的函数。图像有 4 种尺寸需要调整大小。所以这个尺寸。
  • 是的,我只阅读 JPG 文件。当我在其中传递 imagecreatefromjpeg($url) 时没有收到此错误,因为它是全局访问。
  • 是的,但我认为尺寸是相对的?那么您的函数如何知道起始尺寸是多少?还是总是100x100300x300 等?

标签: php image


【解决方案1】:

如果您尝试读取JPG 文件以外的文件,它将仅返回黑色图像, 因此,在读取图像时,请检查您的文件真正具有哪种文件类型,然后在这三个(jpegpnggif)之间调用正确的函数。

【讨论】:

【解决方案2】:

您是否将$width$height 设置在任何位置?

$width = imagesx($image);
$height= imagesy($image);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

【讨论】:

  • 非常感谢。我没有设置原始宽度和高度。对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-25
相关资源
最近更新 更多