getimagesize()没有在php 5.6上工作?

时间:2017-01-10 18:18:16

标签: php

我有一个php脚本从ajax请求获取base64字符串然后我使用getimagesize($ image)来获取它的大小。 这在php 5.3上运行正常,但是现在我运行php 5.6这似乎不起作用。

$image = $this->input->post('image');
$info = getimagesize($image);

1 个答案:

答案 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
    );
}