簡體   English   中英

顯示使用imagecreatefromstring創建的圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM