Entradas

Mostrando las entradas de febrero, 2019

Código de prueba de base de datos (MySQL) en PHP


Lo mínimo necesario para probar los datos de conexión a una base de datos de MySQL (o MariaDB), con su consulta de prueba, pobremente optimizada.

Código

<?php
$mysqli = new mysqli("localhost","usuario","clave", "base_de_datos");

/* comprobar la conexión */
if ($mysqli->connect_errno) {
 printf("Falló la conexión: %s\n", $mysqli->connect_error);
 exit();
}else{
 print("Conexión a Base de Datos Correcta.\n\n");
}

if($resultado = $mysqli->query("SELECT NOW() AS Fecha;"))
{
 print '<pre>';
 while ($fila = $resultado->fetch_assoc()) 
 {
  print_r($fila);
 }
 $resultado->free();
 print '</pre>';
}else{
 printf("ERROR: %s",mysqli_error($mysqli));
}

$mysqli->close();
?> 

Rotar una imágen basándose en los metadados EXIF (C#)

Mientras estaba escribiendo un generador de miniaturas para un sistema, noté que algunas imágenes generadas no coincidían con el original, y oh sorpresa!, todas las imágenes tenían algo en común: fueron tomadas con celular....

Al abrir las imágenes con Microsoft Paint (Versión XP), pude constatar que las imágenes generadas coincidían con las miniaturas, a pesar que el explorador de archivos y el navegador web decían lo contrario, ¿el culpable? ¡Metadatos!.

Los metadatos son datos adicionales incrustados en un archivo, generalmente al final del mismo; y su función es proporcionar información adicional, que en mi caso es orientación de la imagen.

Existen 8 distintos tipos de Orientación:


1 - Horizontal (normal) - RotateNoneFlipNone

2 - Mirror horizontal - Rotate180FlipY

3 - Rotate 180 - Rotate180FlipNone


4 - Mirror vertical - RotateNoneFlipY

5 - Mirror horizontal and rotate 270 CW - Rotate270FlipY

6 - Rotate 90 CW - Rotate90FlipNone

7 - Mirror horizontal and rotate 90 CW - Rotate90FlipY

8 - Rotate 270 CW - Rotate270FlipNone

Referencias

using System.Drawing;
using System.Drawing.Imaging;

Código

RotateFlipType rotation = RotateFlipType.RotateNoneFlipNone;
            
foreach (PropertyItem item in bitmap.PropertyItems)
{
 if (item.Id == 0x0112)
 {
  int orientation = BitConverter.ToInt16(item.Value, 0);
  switch (orientation)
  {
   case 2: rotation = RotateFlipType.Rotate180FlipY; break;
   case 3: rotation = RotateFlipType.Rotate180FlipNone; break;
   case 4: rotation = RotateFlipType.RotateNoneFlipY; break;
   case 5: rotation = RotateFlipType.Rotate270FlipY; break;
   case 6: rotation = RotateFlipType.Rotate90FlipNone; break;
   case 7: rotation = RotateFlipType.Rotate90FlipY; break;
   case 8: rotation = RotateFlipType.Rotate270FlipNone; break;
  }
  break;
 }
}
image.RotateFlip(rotation); 

Fuentes