Abrir, rotar y almacenar imágenes Tiff en una columna de blob de base de datos MySQL

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

  •  06-07-2019
  •  | 
  •  

Pregunta

Mi problema es bastante sencillo:

  1. Recuperar una imagen de una base de datos MySQL (actualmente almacenada como datos binarios en una columna de blob)
  2. Rota esa imagen 90 grados (usando la rotación de imagen de PHP)
  3. Almacene la imagen nuevamente en la base de datos con los cambios de rotación aplicados.

Tengo problemas para encontrar funciones que me permitan guardar la imagen como un flujo de datos (no en el sistema de archivos) ya que estas imágenes no pueden tocar el servidor web (por lo tanto, por qué están en la base de datos). Cualquier consejo es bienvenido.

Gracias

¿Fue útil?

Solución

¿Está convirtiendo la imagen a otro tipo antes de rotar? Dijiste que estás usando tiffs, GD solo puede leer los encabezados de imágenes tiff , necesitarás para convertirlo primero. Probablemente con ImageMagick

Lo más probable es que desee guardar los archivos en un directorio temporal:

  • Consultar base de datos para archivo
  • Guardar en el directorio temporal (puede proteger los archivos estableciendo permisos si es necesario)
  • Girar imagen
  • Insertar de nuevo en la base de datos
  • Eliminar archivo temporal

Otros consejos

SELECCIONE los datos de su DB. Pase los datos a imagecreatefromstring ()

Ahora tendrá un recurso de imagen al que puede llamar imagerotate.

Para guardarlo de nuevo en la base de datos, deberá enviarlo a través de imagepng () / imagejpeg () o la función equivalente para el tipo de imagen que está utilizando. Estas funciones se envían al navegador o archivo para que pueda usar el almacenamiento en búfer de salida para capturar una cadena y guardarla nuevamente en la base de datos.

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

$ img_data ahora se puede guardar en la base de datos.

Esto es solo un bosquejo, pero espero haber explicado la idea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top