2012-06-14 5 views
0

내 페이지에있는 모든 내 사진을 보호하기 위해 워터 마킹 시스템을 사용하고 있습니다 "리소스를로드하지 못했습니다" 로드 및 표시하지만 Chrome을 렌더링하자마자 "리소스로드 실패"라고 표시됩니다. 왜로드하지 않으면 왜 그걸 표시했는지 모르기 때문에 이상합니다.구글 크롬은

어쨌든 다른 브라우저에서는이 문제를 재현 할 수 없습니다. 다시 이상한 점은 스크립트에 아무 문제가 없다는 것입니다.

이미지가 작아서 더 정확하게 표시되지만 19 이미지 중 2 개가로드 중입니다. 이제

내가 일반적으로 이미지를 표시 할 때이

(즉, 워터 마킹 스크립트없이 "<"IMG "> <"/ IMG ">"태그를 통해.) 발생하지 않습니다하지만 다른 웹 사이트에 I가있다 워터 마킹 스크립트는 없지만 여전히로드되지 않습니다.

또 다른 질문은 다음과 같습니다.

내 웹 사이트 계약을 규율하는 법 때문에 원래 파일에 저작권 및 .htaccess 보호 기능을 사용해야합니다 ... 어쨌든 사용자가 이미지 원본 파일에 직접 액세스 할 수 없기 때문입니다. 이러한 오류가이 결과 일 수 있습니까? 그런데 다시 왜 일부는 표시하고 다른 것은 표시하지 않으며 같은 방식으로이 문제가있는 Chrome 만있는 이유는 무엇입니까?

당신의 생각은 만족 스러울 것입니다.

P.

Google Chrome 19.0.1084.56 (Official Build 140965) m 
OS Windows 
WebKit 536.5 (@119244) 
JavaScript V8 3.9.24.29 
Flash 11,3,300,257 
User Agent Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5 

시각 예 :

Loading

Loaded

답변

1

크롬에서 버그가 수 있도록 나타납니다이 브라우저 정보입니다. 나를 미치게 만들었 기 때문에 base64를 사용하여 "수정"이되었습니다. 워터 마크 스크립트를 정확히 그대로두고 이미지를 출력하는 스크립트로 이동하십시오.

function base64_encode_image ($imagefile) { 
     $filename=htmlentities($imagefile); 
     $filetype = pathinfo($filename, PATHINFO_EXTENSION); 
     $imgbinary = file_get_contents($filename); 
     return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary); 
} 

$string=base64_encode_image("http://www.domain.com.au/watermark.php?imagesrc=image1.jpg"); 

$imgList.="<img src=\"$string\" title=\"\">"; 
0

아마 문제는 Content-Lentgh를 돌려주지 않았기 때문일 수 있습니다.

imagejpeg($image, 'php://memory/temp.jpeg'); 
    header("Content-Length: " . filesize('php://memory/temp.jpeg')); 
    $fp = fopen("php://temp/temp.jpeg", 'r'); 
    echo stream_get_contents($fp); 
:

는 다음과 같은 코드로 라인 imagejpeg($image);를 교체해야

관련 문제