Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah saya boleh memaparkan imej binari secara langsung dalam satu skrip tanpa menyimpannya ke cakera?

Bagaimanakah saya boleh memaparkan imej binari secara langsung dalam satu skrip tanpa menyimpannya ke cakera?

Susan Sarandon
Susan Sarandonasal
2024-11-08 04:55:021113semak imbas

How can I display binary images directly in a single script without saving them to disk?

Memaparkan Imej Perduaan dalam Skrip Tunggal

Masalah:

Bolehkah imej dicipta semula dan dipaparkan terus daripada data binari dalam skrip yang sama? Ini melibatkan pemprosesan data dengan GD atau alat yang serupa sebelum memaparkannya dalam teg imej HTML. Matlamatnya adalah untuk mengelak daripada menyimpan imej yang diproses ke cakera atau menggunakan skrip luaran.

Penyelesaian:

Ini boleh dicapai menggunakan URI data dalam atribut sumber imej. Format URI data ialah:

data:[<MIME-type>][;charset="<encoding>"][;base64],<data>

Fungsi PHP ini mencipta URI data daripada fail:

function data_uri($file, $mime) 
{  
  $contents = file_get_contents($file);
  $base64   = base64_encode($contents); 
  return ('data:' . $mime . ';base64,' . $base64);
}

Kod berikut memaparkan imej menggunakan URI data:

echo '<img src="' . data_uri('elephant.png', 'image/png') . '" alt="An elephant" />';

Penggunaan:

Untuk memaparkan data imej binari yang diproses, anda boleh menggunakan fungsi data_uri dan mengeluarkan URI yang terhasil sebagai sumber imej seperti ini:

$imagedata1 = file_get_contents('assets/test.png');
$imagedata1 = process_using_gd_or_something($imagedata1);

echo '<img src="' . data_uri('data:image/png;base64,' . base64_encode($imagedata1)) . '" />';

Kod ini akan memaparkan imej yang diproses terus daripada data binari tanpa menggunakan skrip luaran atau storan cakera.

Atas ialah kandungan terperinci Bagaimanakah saya boleh memaparkan imej binari secara langsung dalam satu skrip tanpa menyimpannya ke cakera?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn