如何使用FPDF和PHP保持图像质量? - php

我使用FPDF和PHP将图像添加到PDF。但是,如您在此处看到的,PDF中的图像质量比原始图像差很多。

相关代码:

$image_height = 40;
$image_width = 40;
$pdf = new FPDF();
$pdf->AddPage();
$start_x = $pdf->GetX();
$start_y = $pdf->GetY();
$pdf->Image('./images/ds_pexeso_ros_0_17.jpg', $pdf->GetX(), $pdf->GetY(), $image_height, $image_width); 
$pdf->Output("pexeso".date("Y-m-d"),"I");

原始图像为150x150像素。

参考方案

在面向客户的项目中,我遇到了同样的问题。
生成的pdf文档中的图片模糊不清,即使有雇用图像也是如此。

我花了几个小时,但这对我有用。

我看了一下代码,发现在pdf文档的构造函数中设置了比例因子:

//Scale factor
if($unit=='pt')
    $this->k=1;
elseif($unit=='mm')
    $this->k=72/25.4;
elseif($unit=='cm')
    $this->k=72/2.54;
elseif($unit=='in')
    $this->k=72;
else
    $this->Error('Incorrect unit: '.$unit);

比例因子取决于pdf文档的构造函数中给出的值:

function FPDF($orientation='P',$unit='mm',$format='A4')

默认值为“ mm”。在我的大多数文档中,我都会启动pdf文档,例如:

$pdf = new PDF('P');

这意味着将使用72 / 25.4 = 2.83的比例因子。
在刚使用图像之前放置图像时:

$this->Image('path/to/file', 0, 0);

这样我得到了模糊的图像。
也可以在命令中给出图像的宽度

$this->Image('path/to/file', 0, 0, 200); // for a image width 200

这给了我一张太大的图像。但是-诀窍到了-当您将实际宽度除以比例因子(在我的示例中为2.83)并将其放入此语句中时,它会给出非常清晰的图像:

$this->Image('path/to/file', 0, 0, 71); // for a image width 200 / 2.83 = app 71

我希望这也对您有用!

验证IBAN PHP - php

在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…