Imagick::readImage

(PECL imagick 0.9.0-0.9.9)

Imagick::readImageReads image from filename

Описание

bool Imagick::readImage ( string $filename )

Reads image from filename

Список параметров

filename

Возвращаемые значения

В случае успешной работы возвращает TRUE.

Коментарии

Use this to convert all pages of a PDF to JPG:

<?php
$imagick 
= new Imagick();
$imagick->readImage('myfile.pdf');
$imagick->writeImages('converted.jpg'false);
?>

If you need better quality, try adding $imagick->setResolution(150, 150); before reading the file!

If you experience transparency problems when converting PDF to JPEG (black background), try flattening your file:

<?php
$imagick 
= new Imagick();
$imagick->readImage('myfile.pdf[0]');
$imagick $imagick->flattenImages();
$imagick->writeFile('pageone.jpg');
?>

In order to read pages from a PDF-file use [PAGENUMBER] after the filename (pages start from zero!).

Example: Read page #1 from test.pdf

<?php
$imagick 
= new Imagick();
$imagick->readImage('test.pdf[0]');
$imagick->writeImage('page_one.jpg');
?>
2012-12-11 12:43:12
http://php5.kiev.ua/manual/ru/imagick.readimage.html
What is the difference between ReadImage and ReadImageFile?  Based by looking at the pages, you would think that they behave the exact same, except in their arguments: ReadImage takes a string containing the folder location of the file, and ReadImageFile takes a handle pointing to the file location.  Initially, the first looks far more tempting, since you don't have to worry about fopen and fclose commands.

But, there is a problem with the ReadImage function!  With an imagemagick object whose data was created from this function, I could scale, change the colors, and perform artistic effects upon the object, without any problems at all, but then there was a problem with saving: it seemed to be keep me stuck to the image format of the original image (in this case, a ".jpg", but it may be different elsewhere).  The functions setImageFormat and setFormat, programmed line after line, provided no effect to changing the format to png, bmp, or gif.  When the only line of code I changed was ReadImage to ReadImageFile, the problem disappears entirely.

Some sample code to demonstrate (using PHP Version 5.2.17).  Input Filename: test.jpg.  Output Filenames: test_result_bad.bmp, test_result_bad.png, test_result_good.bmp, test_result_good.png.  The resultant filesizes should be enough to convince you that all bad files are merely duplicate jpgs...

<?php

           
// Author: holdoffhunger@gmail.com

        // Preset Image Location
        // ------------------------------

   
$image_file_location "test.jpg";

       
// Create Objects
        // ------------------------------

   
$imagick_type_bad = new Imagick();
   
$imagick_type_good = new Imagick();

       
// Grab Data - BAD METHOD
        // ------------------------------

   
$imagick_type_bad->readImage($image_file_location);

       
// Grab Data - GOOD METHOD
        // ------------------------------
   
   
$file_handle_for_viewing_image fopen($image_file_location'a+');
   
   
$imagick_type_good->readImageFile($file_handle_for_viewing_image);
   
   
fclose($file_handle_for_viewing_image);

       
// Save File - BAD DATA
        // ------------------------------

   
$file_handle_for_saving_bad_bmp fopen("test_result_bad.bmp"'a+');

   
$imagick_type_bad_bmp = clone $imagick_type_bad;
   
$imagick_type_bad_bmp->setImageFormat("bmp");
   
$imagick_type_bad_bmp->setFormat("bmp");
   
$imagick_type_bad_bmp->writeImageFile($file_handle_for_saving_bad_bmp);

   
fclose($file_handle_for_saving_bad_bmp);

   
$file_handle_for_saving_bad_png fopen("test_result_bad.png"'a+');

   
$imagick_type_bad_png = clone $imagick_type_bad;
   
$imagick_type_bad_png->setImageFormat("png");
   
$imagick_type_bad_png->setFormat("png");
   
$imagick_type_bad_png->writeImageFile($file_handle_for_saving_bad_png);

   
fclose($file_handle_for_saving_bad_png);

       
// Save File - Good DATA
        // ------------------------------

   
$file_handle_for_saving_good_bmp fopen("test_result_good.bmp"'a+');

   
$imagick_type_good_bmp = clone $imagick_type_good;
   
$imagick_type_good_bmp->setImageFormat("bmp");
   
$imagick_type_good_bmp->setFormat("bmp");
   
$imagick_type_good_bmp->writeImageFile($file_handle_for_saving_good_bmp);

   
fclose($file_handle_for_saving_good_bmp);

   
$file_handle_for_saving_good_png fopen("test_result_good.png"'a+');

   
$imagick_type_good_png = clone $imagick_type_good;
   
$imagick_type_good_png->setImageFormat("png");
   
$imagick_type_good_png->setFormat("png");
   
$imagick_type_good_png->writeImageFile($file_handle_for_saving_good_png);

   
fclose($file_handle_for_saving_good_png);

?>
2013-01-10 17:50:06
http://php5.kiev.ua/manual/ru/imagick.readimage.html
If you have just uploaded the PDF and want to generate an image from the first page, the [0] needs to be added to the image name as a text string.

        $filename = getSafeFileName($uploaddir,basename($_FILES['brochure_pdf']['name'], $overwrite));
        $uploadfile = $uploaddir . $filename;
        if (move_uploaded_file($_FILES['brochure_pdf']['tmp_name'], $uploadfile)) {
              $brochure_pdf = $filename;
            $im = new Imagick();
            $im->setResolution(80,80);
            $im->readimage($uploadfile."[0]"); 
            $im->setImageFormat('jpeg'); 
            $image_name = "save_as_name.jpg";
            $imageprops = $im->getImageGeometry();
            if ($imageprops['width'] <= 175 && $imageprops['height'] <= 300) {
                // don't upscale
             } else {
                 $im->resizeImage(175,300, imagick::FILTER_LANCZOS, 0.9, true);
             }

            $im->writeImage($uploaddir .$image_name); 
            $im->clear(); 
            $im->destroy();
2015-03-04 01:53:01
http://php5.kiev.ua/manual/ru/imagick.readimage.html

    Поддержать сайт на родительском проекте КГБ