[英]gif image is not created by imagecreatefromstring() and imagegif()
[英]Displaying an image created with imagecreatefromstring
假設我的代碼看起來像:
<?PHP
//
//... stuff here
//
$im = imagecreatefromstring( $imageData );
echo "<img src=" . /* what goes here? */ . "alt=\"the image\" />";
//
// more stuff here
//
?>
我該怎么替換/ *這里有什么? * /所以我的圖像數據會顯示?
謝謝。
我該怎么替換/ *這里有什么? * /所以我的圖像數據會顯示?
您突出顯示的位置是img
HTML-tag 文檔的所謂src
屬性。 該值是所謂的URI Docs 。
在您的情況下,您希望該URI指向有問題的圖像數據。 您沒有指定圖像應該輸出的類型,因此我將假設它是以下示例中的PNG圖像。
您現在需要將圖像數據轉換為URI。 從圖像數據創建的最直接的URI是所謂的data:
URI Wikipedia :
<?PHP
//
//... stuff here
//
$im = imagecreatefromstring( $imageData );
ob_start();
imagepng($img);
$png = ob_get_clean();
$uri = "data:image/png;base64," . base64_encode($png);
echo "<img src=" . $uri /* URI goes here */ . " alt=\"the image\" />";
//
// more stuff here
//
?>
即使這是最直接的方式,也不總是建議這樣做,因為圖像數據將隨HTML一起返回到瀏覽器。 如果圖像很大,這通常被認為是開銷。
您可以在其中放置任何其他URI,而不是使用data:
URI,例如指向服務器上返回圖像的PHP腳本的HTTP URI。 這樣的腳本可以很簡單:
<?php
$img = imagecreatefromstring($string);
header('Content-type: image/png');
imagepng($img);
這與Marc B建議的相似,也可以看到他的回答 。
<?php
$img = imagecreatefromstring($string);
header('Content-type: image/jpeg');
imagejpeg($img);
應該是你所需要的一切。 按原樣使用圖像標記,您需要將圖像輸出到臨時文件並將圖像標記指向該標記(這會引發第二個HTTP請求),或使用數據網址 。
您必須先將資源保存到文件中,或者使用imagepng()
在單獨的請求中輸出。
有關更多信息,請參閱imagecreatefromstring()
文檔。
如果要使用數據URI方案 ,可以嘗試使用:
<?php
// If your image is binary data. use `base64_encode($imageData)`.
$imageData = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';
echo '<img src="data:image/png;base64,'. $imageData .'" />';
我想你可以做這樣的事......
$src = "data:image/gif;base64," . $imageData ;
echo "<img src=\"$src\" alt=\"the image\" />";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.