2016-11-10 150 views
1

我正在使用laravel并使用in进行图像处理。 我想增加图像的DPI。我没有看到有关DPI here的任何文档。 php或任何其他方法与phplaravel有任何解决方案吗?使用干预将图像的DPI从72改为300

+0

你可以试试这个 - http://pecl.php.net/package/imagick –

回答

2

干预图像不支持此操作,但您可以使用-unit PixelsPerInch选项更改imagemagick的DPI。例如:

+1

你能解释downvote吗? –

+0

你能解释一下如何执行一步一步 – kunal

2

我只是要解决这个问题,这里是我想出的解决方案。首先,我必须安装Imagick。我在运行Apache,PHP 7.1和Laravel的本地mac上使用的一般流程如下。

使用终端,安装ImageMagick的Ghostscript的依赖

brew update 
brew install ghostscript 

安装ImageMagick的,如果你不已经拥有了它

brew install imagemagick 

安装Imagick PHP扩展(pkg配置时,才需要。终端可以让你知道它是否缺失)。

brew install pkg-config 
pecl install imagick 

通过将以下行添加到php.ini文件的底部来激活imagick php扩展。我不得不使用phpinfo()来找出我的位置。

extension=imagick.so 

对于PHP 7.1,我还需要安装以下内容。否则,Imagick会在终端运行良好,但在php中不会找到Imagick。

brew install php71-imagick 

然后重新启动Apache

sudo brew services restart php71 

一旦这样做了,你要善于使用Imagick。从那里你可以改变干预的驱动程序来使用Imagick而不是GD。 See Intervention Docs

$manager = new ImageManager(array('driver' => 'imagick')); 

,或者如果您在Laravel的时候,你可以只更新配置/ image.php和改变你的驱动程序。

'driver' => 'imagick' 

现在,借助干预功能,您可以为自己的图像做所需的一切。

$image = Image::make('some/image.jpg'); 
$image->resize($width, $height, function ($constraint) { 
    $constraint->aspectRatio(); 
})->stream('jpg'); 

最后,您可以从介入获取Imagick对象并更改dpi。

$finalImage = $image->getCore(); //get Imagick object 
$finalImage->setImageUnits(imagick::RESOLUTION_PIXELSPERINCH); 
$finalImage->setImageResolution(300,300); 

编辑

我跑到那里,如果我是无欲无求我的终端数据库,并自动缩略图创建一个问题,我得到一个"ImageMagick module not available with this PHP installation."错误。原来我的浏览器使用的是php 7.1,而我的终端是5.something。所以我必须做到以下几点:

在终端中运行以找到它正在使用的php.ini。

php -i | grep php.ini 

激活该文件中的imagick扩展名,就像以前一样。

extension=imagick.so 

应该这样做。另一个选择是让终端使用与你的apache相同的php版本。如果你想这样做,我会搜索周围的方向...有一堆漂浮在附近。

+0

感谢这个答案:) – hemsbhardiya