从 PHP Imagine 实例中获取 Imagick 实例


Get Imagick instance out of PHP Imagine instance

我有一个PHP Imagine的实例:

$imagine = new 'Imagine'Imagick'Imagine();

有没有办法获取包装的 Imagick 实例?我需要这个来删除图像中的透明度。如果无法获取实例,如何使用 PHP 想象从图像中删除透明度?

我明白了。Imagine 的文档太差了,太荒谬了......我必须进入Imagine的源代码才能找到我需要的东西:

$imagine = new 'Imagine'Imagick'Imagine();        
$image = $imagine->open($this->getFile()->getRealPath());  
$imagick = $image->getImagick();

使用imagick实例是否可以保存?

这是工作代码:

$imagine = new 'Imagine'Imagick'Imagine();        
$image = $imagine->open($source);  
$imagick = $image->getImagick();
if($imagick->getImageAlphaChannel()) { #only if it has transparency            
    $imagick->setImageBackgroundColor("white");
    $imagick = $imagick->flattenImages(); 
    $imagick->writeImage();  
    $image = $imagine->open($source);                 
} 
$image->strip(); //remove GPS, EXIF, comments, ....        
$image->interlace('Imagine'Image'ImageInterface::INTERLACE_LINE);
$image->save($dest);

我认为这不是最佳解决方案。我需要一种方法来替换 Imagine 的 imagick 实例,但没有这样的方法。所以我正在使用一种解决方法:

$imagick->writeImage();  
$image = $imagine->open($source); 

删除透明度后,我覆盖了原始文件。然后我用 imagine 重新打开同一个文件,这意味着 Imagine 正在使用正确的图像(没有透明度的图像)

我测试了它,它可以工作。但我认为这不是最好的解决方案。

如何在不获取新的 imagick 实例的情况下删除 Imagick 中的透明度?我想,这样就可以了。