Изображение с URL, затем обрезать - PullRequest
1 голос
/ 01 июля 2011

Итак, я пытался получить изображение с внешнего URL, обрезать его и затем сохранить. Я мог бы скопировать и сохранить это хорошо, но это часть урожая, которая беспокоит меня. Я не могу понять, как получить ресурс изображения из материала CURL (я плохо разбираюсь в curl, это чужой материал curl).

Я думал, что это было так:

$img = imagecreatefromstring($image);
$crop = imagecreatetruecolor(8,8);
imagecopy ( $crop, $img, 0, 0, 8, 8, 8, 8);

Но не повезло, спасает испорченный PNG. Вот полный код:

            $link = "urlhere";
        $path = './mcimages/faces/';

            $curl_handle=curl_init(urldecode($link));
            curl_setopt($curl_handle, CURLOPT_NOBODY, true);
            $result = curl_exec($curl_handle);
            $retcode = false;
            if($result !== false)
            {
                $status = curl_getinfo($curl_handle, CURLINFO_HTTP_CODE);
                if($status == 200)
                    $retcode = true;
            }
            curl_close($curl_handle);

            if($retcode)
            {
                $curl_handle=curl_init();
                curl_setopt($curl_handle,CURLOPT_URL,urldecode($link));
                curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
                curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
                $image = curl_exec($curl_handle);
                curl_close($curl_handle);

                if($image !== false)
                {
                    $img = imagecreatefromstring($image);
                    $crop = imagecreatetruecolor(8,8);

                    imagecopy ( $crop, $img, 0, 0, 8, 8, 8, 8 );

                    if(strpos($link,"/") !== false)

                    {
                        $name = explode("/",$link);
                        $total = count($name);
                        $handle = fopen($path.$name[$total-1],"w") or die("Could not create : ".$path.rand()."_".$name[$total-1]);
                        if($handle !== false)
                        {
                            fwrite($handle,$crop);
                            fclose($handle);
                            echo 'The file has been successfully saved !';

                        }
                    }
                }
            } else {
                echo 'File not found !';
            }

1 Ответ

1 голос
/ 01 июля 2011

AFAIK, это неправильно:

fwrite($handle,$crop);

использование

imagejpeg($crop, 'output-file.jpg'); // or imagepng()

Ваш $ crop - это ресурс, а не двоичная строка с данными изображения.

...