Abrir, rotar y almacenar imágenes Tiff en una columna de blob de base de datos MySQL
Pregunta
Mi problema es bastante sencillo:
- Recuperar una imagen de una base de datos MySQL (actualmente almacenada como datos binarios en una columna de blob)
- Rota esa imagen 90 grados (usando la rotación de imagen de PHP)
- 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
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.