我有一个php脚本从ajax请求获取base64字符串然后我使用getimagesize($ image)来获取它的大小。 这在php 5.3上运行正常,但是现在我运行php 5.6这似乎不起作用。
$image = $this->input->post('image');
$info = getimagesize($image);
答案 0 :(得分:0)
正如@Barman所说的那样我猜php 5.6在使用getimagesize()函数时更加严格。 我通过制作临时图像,将其粘贴到我的pdf文档中然后删除它来实现它。
$image = $this->input->post('image');
$dataURI = $image;
$dataPieces = explode(',',$dataURI);
$encodedImg = $dataPieces[1];
$decodedImg = base64_decode($encodedImg);
// Check if image was properly decoded
if( $decodedImg!==false )
{
// Save image to a temporary location
if( file_put_contents(TEMPIMGLOC,$decodedImg)!==false )
{
$pdf->AddPage("L");
$pdf->centreImage(TEMPIMGLOC);
// Delete image from server
unlink(TEMPIMGLOC);
}
}
毋庸置疑,centreImage是我的pdf类中的自定义函数,它只是将图像置于新页面的中心。
感谢大家的反馈和信息,我会更多地了解文档,因为我不清楚它在php 5.3中是如何工作的
这里更清楚的是getimagesize()无效的主要功能。
function resizeToFit($imgFilename) {
list($width, $height) = getimagesize($imgFilename);
$widthScale = self::MAX_WIDTH / $width;
$heightScale = self::MAX_HEIGHT / $height;
$scale = min($widthScale, $heightScale);
return array(
round($this->pixelsToMM($scale * $width)),
round($this->pixelsToMM($scale * $height))
);
}
function centreImage($img) {
list($width, $height) = $this->resizeToFit($img);
// you will probably want to swap the width/height
// around depending on the page's orientation
$this->Image(
$img, (self::A4_HEIGHT - $width) / 2,
(self::A4_WIDTH - $height) / 2,
$width,
$height
);
}