2016-11-10 66 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

相關問題