2012-08-29 44 views
0

我正在尝试创建一个小型实验性脚本,用于从使用php的网络漫画网站获取漫画。我正在玩的网站是Fredo and Pidjin。这里是我写到目前为止的代码:获取源代码后无法为图像创建句柄

<?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'); 

     for($iii=0; $iii<count($imageList); $iii++){ 
      $storage[$iii] = $imageList[$iii]->src; 

     } 

     $img = file_get_contents($storage[0]); 
     $img = imagecreatefromstring($img); 

     header("Content-type: image/png"); 
     $something = imagepng($img); 
?> 

对于抓取HTML,我使用简单的HTML DOM解析器。

这就是我想要做的:获取图像的src并将其分配给一个句柄。随后为页面上的所有漫画面板找到它,并使用imagecopy制作一个可以保存到计算机中的条。但是,代码处于初步阶段,我还没有到图像复制部分。

问题:虽然imagepng(...)在浏览器上输出文件,但我无法在imagecopy中使用图像上的$ src句柄(可以这么说)。

在此先感谢。

回答

2

你是如何获得图像的句柄?

$src = imagecreatefrompng($storage[0]); 
$dest = imagecreatetruecolor(80, 40); 
imagecopy($dest, $src, 0, 0, 20, 13, 80, 40); 

header('Content-Type: image/png'); 
imagepng($dest); 

如果你需要显示多个图像尝试输出缓冲:

ob_start(); 
header('Content-Type: image/png'); 
imagepng($img1); 

header('Content-Type: image/png'); 
imagepng($img2); 
ob_end_flush(); 
+0

获得$ SRC在你的建议,我该如何将其显示在浏览器的方法后?使用echo($ src),浏览器显示“资源ID#6”。我现在完全感到困惑。 – day0

+0

'imagecopy'用于*复制图像的一部分*,它返回的是包含复制部分的资源。为了在浏览器中显示它,你只需要'header('Content-Type:image/png'); imagepng($ DEST);'。这是你想要达到的目标吗? – raidenace

+0

到目前为止,非常感谢您的帮助。已经能够取得一些进展。我目前面临另一个问题,我有两个资源'$ img1'和'img2'。我试着给出两个连续的'imagepng($ resource)',但只有第一个图像显示在浏览器中。 – day0