Ouverture, rotation et stockage des images Tiff dans une colonne Blob de base de données MySQL

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

  •  06-07-2019
  •  | 
  •  

Question

Mon problème est plutôt simple:

  1. Récupérer une image d'une base de données MySQL (actuellement stockée sous forme de données binaires dans une colonne blob)
  2. Faites pivoter cette image de 90 degrés (à l'aide de l'imagerotate de PHP)
  3. Stockez l'image dans la base de données avec les changements de rotation appliqués.

Je ne parviens pas à trouver des fonctions qui me permettent de sauvegarder l'image en tant que flux de données (et non vers le système de fichiers), car ces images ne sont pas autorisées à toucher le serveur Web (et par conséquent, pourquoi elles figurent dans la base de données). Tout conseil est le bienvenu.

Merci

Était-ce utile?

La solution

Convertissez-vous l'image en un autre type avant de le faire pivoter? Vous avez indiqué que vous utilisiez des fichiers tiff. GD ne peut lire que les en-têtes des images tiff , vous aurez besoin de pour le convertir en premier. Probablement avec ImageMagick

Très probablement, vous voudrez enregistrer les fichiers dans un répertoire temporaire:

  • Base de données de requêtes pour le fichier
  • Enregistrer dans le répertoire temporaire (vous pouvez protéger les fichiers en définissant des autorisations si nécessaire)
  • Faire pivoter l'image
  • Réinsérer dans la base de données
  • Supprimer le fichier temporaire

Autres conseils

SÉLECTIONNEZ les données de votre base de données. Transmettez les données dans imagecreatefromstring ()

Vous allez maintenant avoir une ressource image sur laquelle vous pouvez appeler imagerotate.

Pour le réenregistrer dans la base de données, vous devez le générer à l'aide de . imagepng () / imagejpeg () ou la fonction équivalente pour le type d'image que vous utilisez. Ces fonctions sont exportées dans un fichier ou un navigateur afin que vous puissiez utiliser la mise en mémoire tampon de sortie pour capturer une chaîne à enregistrer dans la base de données.

ob_start();
imagepng($resource);
$img_data = ob_get_contents();
ob_end_clean();

$ img_data peut maintenant être enregistré dans la base de données.

Ceci n’est qu’une ébauche mais j’espère avoir bien expliqué l’idée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top