2017-01-10 2 views
0

У меня есть php-скрипт, который получает строку base64 из запроса ajax, а затем я использую getimagesize ($ image), чтобы получить его размер. Это работало правильно на php 5.3, но теперь, когда я запускаю php 5.6, это не работает.getimagesize() не работает на php 5.6?

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

Аргумент 'getimagesize' должен быть именем файла, а не содержимым. – Barmar

+0

Дело в том, что он работал ранее в старой версии php. Я не хотел сохранять изображение, которое появилось из этой строки base64, так как я просто его поймал, и я положил его в pdf-документ, используя TCPDF. –

+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 
    ); 
} 
+0

Существует также ['getimagesizefromstring()'] (http://php.net/manual/en/function.getimagesizefromstring.php), поэтому вам не нужно записывать изображение в файл. – Barmar

Смежные вопросы