Saltar al contenido principal
Regla de medici贸n cruzando p铆xeles y cent铆metros con c贸digo PHP de fondo.

馃搻 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 par谩metros un Array asociativo 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 realizar谩 el calculo y regresar谩 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]