2011-07-01 9 views
1

私は外部のURLから画像を取得し、それをトリミングして保存しようとしていました。私はそれをコピーして保存することができますが、それは私を困らせる作物の部分です。私はCURLのものから画像リソースを取得する方法を理解できません(これは他の誰かのカールのものです)。URLからの画像とクロップ

私はそれがこのでしたが:

$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

私の知る限り、これは間違っている:あなたの$作物はリソースではなく、画像データとバイナリ文字列である

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

fwrite($handle,$crop); 

使用。

+0

それをしました。 imagecopyは、サイズを変更しているかのように色を滑らかにしてイメージを修正しようとしているように見えますが、どうやってこれを止めるのですか?# – Crimsonfox

+0

jpg-> PNGから行くことに関係しています。 imagecreatetruecolorを単にimagecreateに変更し、代わりにPNGとして保存しました。今は完璧です。また、負荷によってサイズが小さくなります。 =) – Crimsonfox

関連する問題