【问题标题】:How to get Image DPI in PHP [duplicate]如何在 PHP 中获取图像 DPI [重复]
【发布时间】:2013-06-13 13:46:25
【问题描述】:

我正在寻找可以帮助我在 PHP 中获取图像 DPI 的代码。

有人可以调查一下吗?

提前致谢。

【问题讨论】:

  • 图像大小(以 px 为单位)随 dpi 缩放。您可以使用不同的 dpi 打印每张图片。生成的图像尺寸(在纸上)越小 dpi 越高。一个像素永远是一个像素。

标签: php image density-independent-pixel


【解决方案1】:

您可以为此使用一些图像库。例如:Imagick、GD 库...

(或)

您可以使用以下功能,

function get_dpi($filename){
    $a = fopen($filename,'r');
    $string = fread($a,20);
    fclose($a);

    $data = bin2hex(substr($string,14,4));
    $x = substr($data,0,4);
    $y = substr($data,0,4);

    return array(hexdec($x),hexdec($y));
} 

Already solved this question here... :)

【讨论】:

  • 不适用于所有图像 :( 尝试从 cs3、黑莓、iphone、柯达等保存的图像..
  • 很好的解决方案!谢谢
  • 小图dpi是错误的,大图是1072dpi是1或0dpi是完全错误的
【解决方案2】:

我相信做一个自定义 php 不会转换所有类型的图像。

安装 Imagick 的最佳方式:

$image = new Imagick($filename);
$resolutions = $image->getImageResolution();

【讨论】:

  • Autor 询问的是 DPI 而不是图像分辨率。
  • 是的,我的结果好坏参半。仍在寻找更好的东西。对我来说,无论是 72 dpi 还是 300 dpi,它仍然返回 72 dpi。
  • @BlueMan DPI(每英寸点数)是分辨率。没有?。
【解决方案3】:

使用 ImageMagick

function getDPIImageMagick($filename){
        $cmd = 'identify -quiet -format "%x" '.$filename;       
        @exec(escapeshellcmd($cmd), $data);
        if($data && is_array($data)){
            $data = explode(' ', $data[0]);

            if($data[1] == 'PixelsPerInch'){
                return $data[0];
            }elseif($data[1] == 'PixelsPerCentimeter'){
                $x = ceil($data[0] * 2.54);
                return $x;
            }elseif($data[1] == 'Undefined'){
                return $data[0];
            }                       
        }
        return 72;
}

【讨论】:

  • 它提供了完美的 dpi 但我需要不使用任何库
猜你喜欢
  • 1970-01-01
  • 2011-10-31
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 2016-08-18
相关资源
最近更新 更多