Apertura, rotazione e memorizzazione di immagini Tiff in una colonna BLOB di database MySQL

StackOverflow https://stackoverflow.com/questions/1032994

  •  06-07-2019
  •  | 
  •  

Domanda

Il mio problema è piuttosto semplice:

  1. Recupera un'immagine da un database MySQL (attualmente archiviato come dati binari in una colonna BLOB)
  2. Ruota l'immagine di 90 gradi (usando l'imagerotate di PHP)
  3. 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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top