tomtom
tomtom

Reputation: 614

How to save an Imagick converted image from pdf into a variable

How can I save a converted image file from pdf to jpg from local directory into a variable? Does it have any function that give such detail like $_FILES when we upload file in php?

$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();

Upvotes: 2

Views: 1985

Answers (1)

IncredibleHat
IncredibleHat

Reputation: 4104

This could be helpful to start with:

For saving the file, try instead to use file_put_contents (writeImage can be flakey).

Then to use THAT converted image (from the loop) in variables and saving to database, you can get its full blob into an array to use after you are done saving/clearing.

$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
}

Note if you have a ton of images, and they are large, this can eat up php memory, so make sure you have some checks to prevent overrun.

Upvotes: 1

Related Questions