Convertir Pixeles a Centimetros.

📐 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]