Il metodo comune per memorizzare le immagini in un database è convertire l'immagine in dati base64
prima di memorizzare i dati. Questo processo aumenterà le dimensioni del 33%. In alternativa è possibile memorizzare direttamente l'immagine come BLOB
; ad esempio:Memorizzare l'immagine nel database direttamente o come dati base64?
$image = new Imagick("image.jpg");
$data = $image->getImageBlob();
$data = $mysqli->real_escape_string($data);
$mysqli->query("INSERT INTO images (data) VALUES ('$data')");
e quindi visualizzare l'immagine con
<img src="data:image/jpeg;base64,' . base64_encode($data) . '" />
Con quest'ultimo metodo, si salva 1/3 spazio. Perché è più comune memorizzare le immagini come base64
nei database MySQL?
AGGIORNAMENTO: Ci sono molti dibattiti su vantaggi e svantaggi dell'archiviazione di immagini nei database e la maggior parte delle persone ritiene che non sia un approccio pratico. Ad ogni modo, qui presumo che memorizziamo l'immagine nel database e discutiamo il metodo migliore per farlo.
Salvare i dati in un file e memorizzare solo il percorso del file o l'url nel database – Fredrik
@Fredrik Se si decide di archiviare i dati in un file, perché come dati di base64? Possiamo semplicemente salvare il file di immagine originale. – Googlebot
Ho pensato che lo stavi spedendo da dispositivo come iPhone o qualcos'altro. Quindi non si desidera inviare dati grezzi ma la stringa base64 in JSON o qualcosa del genere. – Fredrik