Apertura, rotazione e memorizzazione di immagini Tiff in una colonna BLOB di database MySQL
Domanda
Il mio problema è piuttosto semplice:
- Recupera un'immagine da un database MySQL (attualmente archiviato come dati binari in una colonna BLOB)
- Ruota l'immagine di 90 gradi (usando l'imagerotate di PHP)
- Memorizza l'immagine nel database con le modifiche di rotazione applicate.
Ho difficoltà a trovare le funzioni che mi permetteranno di salvare l'immagine come un flusso di dati (non nel file system) poiché a queste immagini non è consentito toccare il web server (quindi, perché si trovano nel db). Qualsiasi consiglio è il benvenuto.
Grazie
Soluzione
Stai convertendo l'immagine in un altro tipo prima di ruotare? Hai detto che stai usando tiffs, GD può solo leggere le intestazioni di immagini tiff , dovrai per prima convertirlo. Probabilmente con ImageMagick
Molto probabilmente vorrai salvare i file in una directory temporanea:
- Database di query per file
- Salva nella directory temporanea (puoi proteggere i file impostando le autorizzazioni se necessario)
- Ruota immagine
- Inserisci nuovamente nel database
- Elimina file temporaneo
Altri suggerimenti
SELEZIONA i dati dal tuo DB. Passa i dati in imagecreatefromstring ()
Ora avrai una risorsa immagine su cui puoi chiamare imagerotate.
Per salvarlo di nuovo nel DB, dovrai eseguirne l'output utilizzando imagepng ()
/ imagejpeg ()
o la funzione equivalente per il tipo di immagine che stai utilizzando. Queste funzioni vengono inviate al browser o al file in modo da poter utilizzare il buffering di output per acquisire una stringa da salvare nel DB.
ob_start();
imagepng($resource);
$img_data = ob_get_contents();
ob_end_clean();
$ img_data
ora può essere salvato nel DB.
Questo è solo uno schema approssimativo, ma spero di aver spiegato l'idea.