2012-09-04 5 views
0

가능한 중복 :
Headers already sent by PHP동시에 문자열과 이미지를 표시

echo "how"; 

$im = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 
header('Content-Type: image/jpeg'); 
imagejpeg($im); 
imagedestroy($im); 

내가 동시에 문자열 "어떻게"이미지를 표시 할 이 이미지를 파일로 저장하고 싶지는 않습니다.

위의 코드는 작동하지 않습니다. 내가 줄을 메아리 "어떻게", 잘 작동합니다. 문자열과 이미지를 동시에 표시하려면 어떻게 수정해야합니까?

+0

이 페이지를보십시오 : http://en.wikipedia.org/wiki/Data_URI_scheme. 결국, header ('Content-type ...');를 제거하고 base64를 사용하여 인코딩하려고합니다. 여기에 실제로 질문에 예제가있는 질문이 있습니다. http : //stackoverflow.com/questions/1461793/ie6-gd-and-php-image-outputting – jeremy

+2

HTML 사용 ....... – Petah

답변

1

Nile이 이미 지적했듯이 이미지에 대해 데이터 URI를 사용하려고합니다. 어떻게됩니까

echo "how"; 

$im   = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 
$tmpImg  = tempnam('/tmp', 'image'); 

imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 
imagejpeg($im, $tmpImg); 
imagedestroy($im); 

echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents($tmpImg)) . '">'; 

unlink($tmpImg); 

을 다음과 같이

코드를 사용하는 작업 코드 예제는? 사용 된 코드는 다소 차이가 있지만 이미지는 브라우저로 직접 보내지 않고 임시 파일에 쓰여집니다. imagejpeg의 두 번째 매개 변수입니다. 그런 다음 임시 파일의 내용을 Base64-Encoding을 사용하여 Data-URI에 넣고 DataUri를 이미지 태그의 src로 설정합니다.

끝에 임시 파일을 삭제하고 싶습니다!

임시 파일을 생략하려면 출력 버퍼링을 사용하여 이미지를 캡처 할 수 있습니다. 이것은 다음과 같이 보일 것입니다 :

echo 'how'; 

$im   = imagecreatetruecolor(120, 20); 
$text_color = imagecolorallocate($im, 233, 14, 91); 

imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color); 

ob_start(); 
imagejpeg($im); 
imagedestroy($im); 
$image = ob_get_contents(); 
ob_end_clean(); 

echo '<img src="data:image/jpeg;base64,' . base64_encode($image) . '">'; 
관련 문제