📐 Convertir Pixeles a Centímetros en PHP
En mi trabajo diario con imágenes, muchas veces necesito convertir medidas de pixeles a centímetros, especialmente cuando trabajo con generación de PDFs, diseño para impresión o manipulación de imágenes. Para facilitarme la vida, tengo una función en PHP que utilizo constantemente
🧠 ¿Qué hace esta función?
La función recibe como parametros un Array asocitivo con las claves width y height de la imagen de la cual necesitas saber los centimetros, tambien recibe los DPI (Dots Per Inch) ó (puntos por pulgada), con esta información se realizara el calculo y regresara un Array con los datos.
public function convertPixelToCentimeter($dataMeasures=[], $dpi="")
{
$arrayCentimeter = [];
if (empty($dataMeasures)) {
return false;
}
if(!isset($dataMeasures['width']) && !isset($dataMeasures['height']))
{
return false;
}
$dpiImage = ($dpi=="") ? 300 : $dpi;
$centimeterPerInch = 2.54; // 1 pulgada = 2.54 cm
$arrayCentimeter['width'] = round(($dataMeasures['width'] * $centimeterPerInch) / $dpiImage, 2);
$arrayCentimeter['height'] = round(($dataMeasures['height'] * $centimeterPerInch) / $dpiImage, 2);
return $arrayCentimeter;
}
🧮 ¿Cómo funciona?
La funcion recibe como parametro el array $dataMeasures donde contendra los datos width y height de la imagen, en dado caso que el array se encuentre vacio o que alguno de los datos no venga definido, la funcion regresara un false.
El parametro de $dpi puede estar vacio y se asignara un valor por defecto de 300 puntos por pulgada.
La variable $centimeterPerInch es una constante, el valor asignado es por que 1 pulgada equivale a 2.54 cm.
🧪 Ejemplo de uso.
El uso de la funcion puede darle al agregarla a un Helper o cualquier clase en PHP, a continuación dejo un ejemplo de como se puede usar en un ejercicio real.
<?php
$pixeles = ['width' => 1200, 'height' => 1800];
$utils = new Utils();
$cm = $utils->convertPixelToCentimeter($pixeles);
print_r($cm);
// Resultado: ['width' => 10.16, 'height' => 15.24]