Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menyimpan Imej PNG Sisi Pelayan dengan Cekap daripada URI Data Base64?

Bagaimana untuk Menyimpan Imej PNG Sisi Pelayan dengan Cekap daripada URI Data Base64?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 12:45:091042semak imbas

How to Efficiently Save Server-Side PNG Images from a Base64 Data URI?

Cara Menyimpan Sebelah Pelayan Imej PNG dengan Cekap daripada URI Data Base64

Apabila mencipta imej pada sisi klien menggunakan alat seperti Canvas2Image , selalunya timbul keperluan untuk menukar rentetan base64 yang terhasil kepada fail PNG sebenar pada pelayan. Ini boleh dicapai dengan berkesan menggunakan fungsi base64_decode() PHP.

Mengekstrak dan Menyahkod Data Base64

Untuk mengekstrak data imej daripada rentetan base64, ikut langkah berikut:

$data = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABE...';

list($type, $data) = explode(';', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);

Kod ini baris demi baris:

  1. Memisahkan rentetan menggunakan ; untuk memisahkan jenis data dan data sebenar.
  2. Mengabaikan elemen pertama, iaitu jenis data dan hanya menyimpan data sebenar.
  3. Menyahkod data berkod base64 ke dalam bentuk binarinya menggunakan base64_decode().

Menyimpan PNG Fail

Setelah data diekstrak dan dinyahkod, anda hanya boleh menyimpannya ke pelayan sebagai fail PNG menggunakan file_put_contents():

file_put_contents('/tmp/image.png', $data);

One-Liner Penyelesaian:

Sebagai alternatif, anda boleh menggabungkan pengekstrakan, penyahkodan dan penjimatan ke dalam satu baris ringkas:

$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));

Pengendalian Ralat:

Untuk memastikan integriti data, pertimbangkan untuk mengesahkan jenis imej dan semak kemungkinan ralat semasa penyahkodan base64:

if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
    // ... (additional error handling and processing)
}

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Imej PNG Sisi Pelayan dengan Cekap daripada URI Data Base64?. 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