2012-10-04 2 views
3

다른 사이트의 허가를 받아 다른 사이트에서 호스팅되는 이미지를 주기적으로 다운로드하여 기부 사이트에 대한 외부 링크가있는 사이트의 웹캠 사진 모음에 포함시켜야합니다.PHP로 이미지 복사

다른 사이트에서는 아무런 문제가 없지만이 특정 이미지에서는 이미지를 열어 크기를 조정하고 Google 서버에 저장할 수 없습니다. 우리 사이트의 한 페이지에 일반 '<img src="http://THEIRIMAGE />을 만들 수 있기 때문에 핫 링크 문제가 아닙니다. 정상적으로 작동합니다.

다른 모든 것과 마찬가지로 $img = new Imagick($sourceFilePath)을 직접 사용해 보았을뿐만 아니라 PHP의 복사본을 사용하려고 시도했지만 cURL을 사용하여 이미지를 복사하려고 시도했지만 이렇게하면 아무런 결과가없는 페이지가 시간 초과됩니다. 여기

문제의 이미지입니다 : http://island-alpaca.selfip.com:10202/SnapshotJPEG?Resolution=640x480&Quality=Standard

내가 말한 것처럼, 나는 여러 가지 다른 웹캠으로 이런 종류의 일을 할 수있어,하지만이 하나 작동하지 않습니다, 나는 끼 었어 왜 그렇지 않은지에 관해서. 어떤 도움이라도 대단히 감사하겠습니다.

감사합니다.

+0

다른 사이트의 사진을 얻기위한 허가를 받았음을 귀하는 분명히 밝혔습니다. 너에게 좋다. –

+0

그 URL은 file_get_contents()에서 잘 작동합니다. –

답변

1

대역폭과 서버로드를 줄이기 위해 일부 사이트는 특정 봇의 콘텐츠 액세스를 차단합니다. cURL 요청은 리퍼러 (대개), 사용자 에이전트 등을 포함하는 실제 브라우저를 더 자세히 모방해야합니다. 리디렉션이 있고 리디렉션을 따르기 위해 cURL에 알려주지 않았을 수도 있습니다. 이 같은 더 많은 OPTS 설정

시도 :

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch,CURLOPT_ENCODING , "gzip"); 
curl_setopt($ch, CURLOPT_REFERER, $url); 
curl_setopt($ch, CURLOPT_USERAGENT, 'PHP'); 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 

가이 일을 실제 브라우저에서 사용자 에이전트를 얻을 거기에 넣어 그 차이가 있는지 확인하지 않습니다.

+0

제안 해줘서 고마워,하지만 (FireBug에서 가져온) 실제 USERAGENT 문자열을 사용하여이 시도한 및 여전히 시간 제한. – edeneye

+0

서버의 IP가 어떻게 든 원격 서버에서 블랙리스트에 올 수도 있습니다. 위의 설명에서 Marc B에서 작동하기 때문에 액세스하는 서버에 문제가있을 것입니다. 명령 줄에서 다운로드하여 해당 항목이 좁은 범위에 도움이되는지 확인하십시오. – Mike

0

file_get_contents()을 사용해보세요.

$url = 'http://island-alpaca.selfip.com:10202/SnapshotJPEG?Resolution=640x480&Quality=Standard'; 
$outputfile = "tmp/image" . date("Y-m-d_H.i.s"); 
$cmd = "wget -q \"$url\" -O $outputfile"; 
exec($cmd); 
$temp_img = file_get_contents($outputfile); 
$img = new Imagick($temp_img); 

이 시도하고 나에게 다시받을 수 : 예를 들어

?

+0

제안 해 주셔서 감사합니다. 그러나 file_get_contents는 시간 제한을 설정합니다. – edeneye

+1

Windows 또는 Linux 환경에 있습니까? 당신이 리눅스에 있다면 명령 행에서 이미지를 만들어 보라. 제대로 다운로드 한 경우 위와 같이 업데이트 해보십시오. – grid