php Imagemagick jpg黑色背景
我有一个php脚本来创建pdf的缩略图,如下所示;php Imagemagick 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有黑色背景,而不是白色..我怎样才能解决这个问题?
我解决了;
$im = new imagick(realpath($file).'[0]');
$im->setCompression(Imagick::COMPRESSION_JPEG);
$im->setCompressionQuality(100);
$im->setImageFormat("jpeg");
$im->writeImage("imagename.jpg");
'setCompressionQuality'不适用于这种情况。对于改变质量使用'setImageCompressionQuality' – vatavale 2018-02-24 19:06:19
如果您的Imagick版本不是最新版本,setImageBackgroundColor可能是错误的。
交换以下行
$im->setImageBackgroundColor("red");
到此(Imagick版本> = 2.1.0)
$im->setBackgroundColor(new ImagickPixel("red"));
或(Imagick版本< 2.1.0)
$im->setBackgroundColor("red");
我在我的问题上做了一些改变..看看..和你的建议是行不通的.. – 2011-05-23 16:36:25
@blasteralfred你能提供访问您的PDF副本,因为我相信这个问题可能与此相关,而不是上面现在提供的代码。更新后的代码在我遇到PDF时没有问题。 – carlgarner 2011-05-26 10:45:25
简单地增加这可防止JPG与黑色背景
-alpha off
在哪里?请以问题的形式给出答案。所以在这种情况下有效的PHP。 – 2017-08-25 10:00:40
改变这个代码$im->setimageformat("jpg");
这个代码 $im->setimageformat("png");
,如果你面对一个背景颜色问题创造。
先前发布的答案都不为我工作,不过下面做:
$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());
更新:所以我最近改变了操作系统,而这之前我的Ubuntu机器上的工作我的Mac上的某些图像仍然现身黑色。
我不得不脚本更改为以下:
$image = new Imagick;
$image->setResolution(300, 300);
$image->setBackgroundColor('white');
$image->readImage("${originalPath}[0]");
$image->setImageFormat('jpg');
$image->scaleImage(500, 500, true);
$image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
的图像读取之前设置背景颜色好像很重要的。我也将任何可能的图层弄平并移除Alpha通道。我觉得我在我的Ubuntu机器上试过ALPHACHANNEL_REMOVE
,并且它没有工作,所以希望在这些答案之间读者可以找到适合他们的东西。
有问题的jpg文件的副本或链接将有所帮助,并且还会显示结果输出的屏幕截图。 – 2011-05-23 15:54:23
劳伦斯伯克:这里是由此产生的图像http://i.imgur.com/jyQC6.jpg – 2011-05-23 16:09:43
什么是你的CSS样式喜欢,你可以链接原始JPG? – 2011-05-23 16:22:18