下载图像并调整大小

时间:2011-10-05 04:07:46

标签: php iphone

我已经构建了一个系统,可以从一堆URL中下载图像,具体取决于用户,并异步获取它们 - 如果它们比我们调整大小的设备屏幕更宽。麻烦的是,这些图像中的一些可能是1MB +,其中许多图像和下载大文件并处理它们导致旧设备挣扎。

所以我想我会介绍一个可以处理下载和调整大小的服务器端级别......但我的PHP并不好。我猜这是可能的,但经过几天的研究后我找不到任何解决方案。有大量的PHP调整大小脚本,但没有来自URL,它们都来自数据库或HTML内部。我需要它发送一个图像的URL,下载它,如果它太大调整大小,然后发送回设备。


更新了cURL

<?php

$imgurl = $_GET["url"];

function curl_download($Url){

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);

    $output = curl_exec($ch);

    $im = imagecreatefromstring($output);

    if ($im !== false)
    {
        header('Content-Type: image/jpeg');

        list($width, $height) = getimagesize($im);
        $new_width = 320;
        $new_height = 320;

        // Resample
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($im);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

        imagejpeg($image_p, null, 100);
    }
    else
    {
        echo 'An error occurred.';
    }
    curl_close($ch);

    return $image_p;
}

?>

2 个答案:

答案 0 :(得分:2)

您可以使用cURL获取图片,CURLOPT_RETURN_TRANSFER传递给curl_setopt以获取图片数据。然后,以下步骤应该用于生成调整大小的图像:

  1. imagecreatefromstring 将允许您构建图像对象
  2. imagecreate 创建适当大小的新图像
  3. imagecopyresampled 用于调整大小
  4. 已调整大小的图片上的
  5. imagejpeg将其发送到浏览器
  6. 正如@Paul所说,您需要将内容类型设置为image/jpeg

答案 1 :(得分:1)

您可以使用cURL或socket下载html页面和图像,然后使用GD2调整图像大小,然后返回浏览器

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

之后,你在iphone上的应用程序从你的php服务器加载这个php创建的图像。我认为这是以你想要的方式操纵来自其他服务器的所有图像的解决方案。