如何将Imagick转换后的图像从pdf保存到变量中

时间:2017-10-29 18:09:08

标签: php imagemagick imagick

如何将转换后的图像文件从pdf保存到本地目录的jpg变量?当我们在php上传文件时,它是否有任何功能可以提供像$ _FILES这样的细节?

$target_dir="$media_dir/";
$target_file= $target_dir .  basename($_FILES["file"]["name"]);

move_uploaded_file($_FILES['file']['tmp_name'], $target_file);
$image= new imagick();
$image->readImage($target_file);
$image->setImageFormat('jpg');

$imgname= basename($target_file,".pdf");

//converting pdf to jpg image and saving in local directory

foreach($imagick as $i=>$imagick) 
{ 
  $image->writeImage($target_dir . $imgname . ($i+1) ." of ". ".jpg"); 
} 

$image->clear();

1 个答案:

答案 0 :(得分:0)

这可能有助于开始:

要保存文件,请尝试使用file_put_contents(writeImage可以是flakey)。

然后在变量中使用转换后的图像(来自循环)并保存到数据库,您可以在完成保存/清除后将其完整的blob放入数组中以供使用。

$imageblobs = array();
foreach( ... ) {
    file_put_contents($target_dir . $imgname . ($i+1) .'_of_'. $page .'.jpg', $image);
    // $image is the Imagick object for the image you are saving

    $imageblobs[] = $image->getImageBlob();
    // OR you can skip putting it into an array, and just save direct to db right here
}

// now you can use each 'blob' variable you setup before you cleared it
foreach($imageblobs as $imageblob) {
    // save $imageblob to db blob column
    // or do other things with it
}

请注意,如果你有大量的图像,并且它们很大,这会占用php内存,所以请确保你有一些检查以防止超支。