php Imagemagick jpg黑色背景
发布时间:2020-05-25 10:57:25 所属栏目:PHP 来源:互联网
导读:我有一个 PHP脚本来创建pdf的jpg缩略图,如下所示; ?php$file =test.pdf;$im = new imagick(realpath($file).[0]);$im-setImageFormat(jpg);$im-resizeImage(200,200,1,0);// start bufferingob_start();$thumbnail =
|
我有一个 PHP脚本来创建pdf的jpg缩略图,如下所示; <?php
$file ="test.pdf";
$im = new imagick(realpath($file).'[0]');
$im->setImageFormat("jpg");
$im->resizeImage(200,200,1,0);
// start buffering
ob_start();
$thumbnail = $im->getImageBlob();
$contents = ob_get_contents();
ob_end_clean();
echo "<img src='data:image/jpg;base64,".base64_encode($thumbnail)."' />";
?>
但由此产生的jpg有黑色背景而不是白色..我该如何解决这个问题? 之前发布的答案都没有对我有用,但是下面的内容是:$image = new Imagick;
$image->setResolution(300,300);
$image->readImage("{$originalPath}[0]");
$image->setImageFormat('jpg');
$image->scaleImage(500,500,true);
$image->setImageAlphaChannel(Imagick::VIRTUALPIXELMETHOD_WHITE);
当我使用Laravel框架时,我将使用转换后的图像并使用Laravels文件系统存储它. Storage::put($storePath,$image->getImageBlob()); 更新:所以我最近改变了操作系统,虽然之前在我的Mac上的Ubuntu机器上工作,但某些图像仍然是黑色的. 我不得不将脚本更改为以下内容: $image = new Imagick;
$image->setResolution(300,300);
$image->setBackgroundColor('white');
$image->readImage("{$originalPath}[0]");
$image->setImageFormat('jpg');
$image->scaleImage(500,true);
$image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
在读取图像之前设置背景颜色似乎很重要.我还压平任何可能的图层并删除alpha通道.我觉得我在我的Ubuntu机器上尝试了ALPHACHANNEL_REMOVE并且它没有工作,所以希望在这些答案之间,读者可以找到适合他们的东西. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
