Pergunta

Estou lutando para pegar uma imagem no momento ... parece bobo, mas confira este link: P

http://manga.justcarl.co.uk/a/oishii_kankei/31/1

Se você receber o URL da imagem, a imagem carrega. Volte, parece que está funcionando bem, mas esse é apenas o navegador carregando a imagem em cache.

O aplicativo estava funcionando bem antes, acho que eles implementaram algum tipo de verificação do referente às suas imagens. Então eu encontrei algum código e criei o seguinte ...

$ref = 'http://www.thesite.com/'; 
$file = 'theimage.jpg';
$hdrs = array( 'http' => array(
 'method' => "GET",
 'header'=> "accept-language: en\r\n" . 
  "Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*\/*;q=0.5\r\n" .
  "Referer: $ref\r\n" . // Setting the http-referer
  "Content-Type: image/jpeg\r\n" 
 )
);
// get the requested page from the server
// with our header as a request-header
$context = stream_context_create($hdrs);

$fp = fopen($imgChapterPath.$file, 'rb', false, $context);
fpassthru($fp);
fclose($fp);

Essencialmente, está inventando um falso referenciador. Tudo o que estou voltando é um monte de bobagens (graças a Fpassthru), então acho que está recebendo a imagem, mas tenho medo de dizer que não tenho idéia de como produzir/exibir a imagem coletada.

Foi útil?

Solução

Tente chamar isso antes da sua chamada para Fpassthru:

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

Isso dirá ao seu navegador que os dados que virão a seguir são uma imagem JPEG. Caso contrário, o PHP dirá automaticamente que é um documento HTML, que está obviamente errado.

Observação: Lembre -se de que todas as chamadas para header deve ser feito antes que qualquer outra coisa seja produzida para o navegador, o que significa que você não pode ter nenhum echo ou print chamadas antes de ligar header, e você não pode ter nada antes da abertura <?php marcação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top