2013-03-28 60 views
-3

我想下载该图像的图像: http://imgs.xkcd.com/clickdrag/1n2w.png下载使用PHP,并在同一时间调整其大小

但像对我来说太大,所以我想调整它可以说比它小100倍就是现在。我也希望图像有它的原始名称(在这种情况下是1n2w.png)。

For downloading i was thinking of using somet 
$content = file_get_contents('http://imgs.xkcd.com/clickdrag/1n2w.png'); 
file_put_contents('/images', $content); 

但它没有工作。也许我需要用卷曲来做这个? 至于调整大小的部分,我不知道要使用什么,所以如果可能的话,我想也看到这方面的一些建议。

+1

file_get_contents由于某种安全原因,有些文件不起作用,您可以使用curl。要进行图片大小调整,请先将文件保存到您的位置,然后重新调整大小。 – Neo 2013-03-28 07:34:08

+0

@Neo,是否只能先下载然后调整大小?因为下载这个大图像需要很长时间(比如几分钟,而且我有225个这样的图像,所以我想知道如果我可以在下载之前通过调整它的大小来加速这个过程) – Edgar 2013-03-28 07:35:47

+2

是的,你必须使用下载图像的卷曲。它比file_put_contents更高效,并且无需下载即可调整它的大小。所以下载它,然后使用php-resize脚本调整大小,然后删除原始大尺寸图像 – Kalai 2013-03-28 07:36:23

回答

0

对于图像大小调整,您可以使用它。

$percent = 0.5; 

    $filename = '/home/Pictures/downloaded_file.jpg'; 

    header('Content-type: image/jpeg'); 

    list($width, $height) = getimagesize($filename); 

    $new_width = $width * $percent; 

    $new_height = $height * $percent; 

    $image_p = imagecreatetruecolor($new_width, $new_height); 

    $image = imagecreatefromjpeg($filename) 
    ; 
    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 

    imagejpeg($image_p, null, 100); 
+0

这项工作,但只适用于JPEG图像,可以用于PNG图像,或者我需要将我的图像转换为JPEG? – Edgar 2013-03-28 08:41:24

+0

这里需要稍作修改,你需要在header中改变,然后你需要使用imagepng代替imagejpeg函数,并使用imagecreatefrompng代替imagecreatefromjpeg。 – Neo 2013-03-28 08:44:44

+0

更改了所有3种东西('image/png','imagecreatefrompng','imagepng'),但它现在不显示任何东西 – Edgar 2013-03-28 08:52:41

相关问题