我通过将一些图像复制到一个新图像中来创建图像。在我的程序的最后一步,我试图将此文件导出到一个文件夹中。
代码如下:
<?php
require_once "../shdp/simple_html_dom.php";
$next = "http://www.pidjin.net/2012/08/28/of-my-own/";
$html = file_get_html($next);
$imageList = $html->find('div[class=episode] p img');
$newHeight = 0;
for($iii=0; $iii<count($imageList); $iii++){
$storage[$iii] = $imageList[$iii]->src;
$img[$iii] = imagecreatefromstring(file_get_contents($storage[$iii]));
$width[$iii] = imagesx($img[$iii]);
$height[$iii] = imagesy($img[$iii]);
$newHeight += ($height[$iii] + 30);
}
$newWidth = max($width);
$cummDestHeight = 0;
$export = imagecreatetruecolor($newWidth, $newHeight);
imagefill($export, 0,0, 0xFFFFFF);
for($iii=0;$iii<count($img);$iii++){
imagecopy($export, $img[$iii], 0, $cummDestHeight, 0, 0, $width[$iii], $height[$iii]);
$cummDestHeight += $height[$iii] + 30;
}
$bits = explode('/',$next);
file_put_contents("../pidjin/$bits[5]-$bits[4]-$bits[3].png",$export);
?>
我收到的错误是:
Warning: file_put_contents(): supplied resource is not a valid stream resource in E:\Web\Comics\pidjin.php on line 54
问题:我不知道如何让$ export导出有效的流资源。
答案 0 :(得分:5)
$ export将成为GD图像句柄。 NOT 可以简单地将其转储到文件中并期望获得JPG或PNG图像。
为此,你应该做
imagepng($export, "../pidjin/$bits etc...");
将为您创建.PNG文件。
答案 1 :(得分:1)
另一个问题是,我终于能够使代码正常工作了。
解决方案:问题在于我试图使用file_put_contents来转储GD句柄,事实证明它并不那么简单。我被定向到imagepng
函数,该函数将目录作为导出文件的第二个参数。
计划:我制作了一个程序,从webcomic Fredo and Pidjin下载条带,以便我以后可以在无法访问互联网时阅读。该计划如下。
<?php
require_once "../shdp/simple_html_dom.php";
$next = "http://www.pidjin.net/2006/02/19/goofy-monday/";
$counter = 1;
while($next){
$html = file_get_html($next);
$imageList = $html->find('div[class=episode] p img');
$newHeight = 0;
for($iii=0; $iii<count($imageList); $iii++){
$storage[$iii] = $imageList[$iii]->src;
$img[$iii] = imagecreatefromstring(file_get_contents($storage[$iii]));
$width[$iii] = imagesx($img[$iii]);
$height[$iii] = imagesy($img[$iii]);
$newHeight += ($height[$iii] + 30);
}
$newWidth = max($width);
$cummDestHeight = 0;
$export = imagecreatetruecolor($newWidth, $newHeight);
imagefill($export, 0,0, 0xFFFFFF);
for($iii=0;$iii<count($img);$iii++){
imagecopy($export, $img[$iii], 0, $cummDestHeight, 0, 0, $width[$iii], $height[$iii]);
$cummDestHeight += $height[$iii] + 30;
}
$bits = explode('/',$next);
imagepng($export, "../pidjin/$counter ($bits[5]-$bits[4]-$bits[3]).png");
$nextUrl = $html->find('span[class=next] a[rel=next]');
$next = $nextUrl[0]->href;
$counter++;
}
&GT;
注意:我使用Simple HTML DOM Parser来抓取源代码并浏览DOM。
干杯。
答案 2 :(得分:0)
用“imagejpeg($ rotate,$ file_new);”
替换“file_put_contents”答案 3 :(得分:-1)
file_put_contents将第二个参数作为字符串。 图像文件不是字符串。 请参阅上面的另外两个回答。 这就是你保存图像的方式。 请多尝试使用本手册。