图像生成和处理
在线手册:中文  英文

Image Processing (ImageMagick)


图像生成和处理
在线手册:中文  英文

用户评论:

carlosvanhalen7 at gmail dot com (2013-03-06 19:09:27)

Here's a handy function that finds the first occurrence of a specific pixel. You can set the tolerance of the color you are looking for, or set it to 0 if want an exact match

<?php

function findPixel($img$r$g$b$tolerance=5)
{
    
$original_                 = new Imagick($img);
    
$height                    0;
    
$width                    0;
    list(
$width$height)    = getimagesize($img);
    
$matrix_org                = array();
    
$matrix_mrk                = array();

    for( 
$x $x $width $x++){
        
$matrix_org[$x]            = array();
        
$matrix_mrk[$x]            = array();
    }

    for( 
$x $x $width $x++ )
    {
        for( 
$y $y $height $y++ ){
            
$matrix_org[$x][$y]                = $original_->getImagePixelColor($x$y)->getColorAsString();
            
$colors                         preg_replace('/[^-,0-9+$]/'''$matrix_org[$x][$y]); 
            
$colors                            explode(','$colors);
            
$r_org                            $colors[0];
            
$g_org                            $colors[1];
            
$b_org                            $colors[2];
            
            if(     ( 
$r <= ($r_org+$tolerance) && $r >= ($r_org $tolerance) ) 
                &&  ( 
$g <= ($g_org+$tolerance) && $g >= ($g_org $tolerance) ) 
                &&  ( 
$b <= ($b_org+$tolerance) && $b >= ($b_org $tolerance) ) )
            {
                return array( 
$x$y );
            }
        }
    }

    return 
false;
}

?>

aem at teletype dot ru (2011-11-30 03:09:07)

To configure and build imagick extension with phpize, you must first install libmagickwand-dev and libmagickcore-dev.
For example, "sudo apt-get install libmagickwand-dev libmagickcore-dev" and then phpize and ./configure.

Mike Robinson (2009-05-25 18:11:34)

PHP Admins: I realize this could be considered a bug report, but please leave this up as it contains helpful information that can be used until this page is updated correctly.
-------------
Please note that this list is lacking many new methods that are available in the current stable release (and even some older ones). You can view the Imagick changelog by going to http://pecl.php.net/package-changelog.php?package=imagick
As of release version 2.3.0RC2 the following methods not listed here are also available for use:
Currently unstable releases (2.3.0+):
* Imagick::getImageMimeType
* Imagick::writeimagefile
* Imagick::writeimagesfile
* Imagick::resetimagepage
* Imagick::setimageclipmask
* Imagick::getimageclipmask
* Imagick::animateimages
* Imagick::recolorimage
* Imagick::floodfillpaintimage
* Imagick::opaquepaintimage
* Imagick::transparentpaintimage
* Imagick::decipherimage
* Imagick::encipherimage
* Imagick::getimagealphachannel
* Imagick::getimagechanneldistortions
* Imagick::getimagegravity
* Imagick::setimagegravity
* Imagick::remapimage
* Imagick::exportimagepixels
* Imagick::getimagechannelkurtosis
* Imagick::functionimage
* Imagick::importImagePixels
* Imagick::sparseColorImage
* Imagick::deskewImage
* Imagick::segmentImage
* Imagickdraw::gettextkerning
* Imagickdraw::settextkerning
* Imagickdraw::gettextinterwordspacing
* Imagickdraw::gettextinterwordspacing
* ImagickPixel::getColorValueQuantum
* ImagickPixel::setColorValueQuamtum
* ImagickPixel::getIndex
* ImagickPixel::setIndex
Latest stable (2.2.2):
* Imagick::getImageChannelRange
* Imagick::setImageAlphaChannel
* Imagick::mergeImageLayers()
* Imagick::setPointsize()
* Imagick::getPointsize()

Eero Niemi (eero at eero dot info) (2008-04-08 07:06:35)

To load image (usually vector image, like PDF) with larger resolution than image's default is, you have to set resolution before reading the file, like this:

<?php
$im 
= new Imagick(); 
$im->setResolution300300 ); 
$im->readImage"test.pdf" );
?>

mlong-php at mlong dot us (2007-10-24 13:11:31)

The fit functionality of thumbnailImage doesn't work as one would anticipate. Instead, use this to make a thumbnail that has max of 200x82:
// Create thumbnail max of 200x82
$width=$im->getImageWidth();
if ($width > 200) { $im->thumbnailImage(200,null,0); }
$height=$im->getImageHeight();
if ($height > 82) { $im->thumbnailImage(null,82,0); }

mlong-php at mlong dot us (2007-10-24 11:46:19)

Here is an example on how to take an image that is already in a string (say, from a database), and resize it, add a border, and print it out. I use this for showing reseller logos
// Decode image from base64
$image=base64_decode($imagedata);
// Create Imagick object
$im = new Imagick();
// Convert image into Imagick
$im->readimageblob($image);
// Create thumbnail max of 200x82
$im->thumbnailImage(200,82,true);
// Add a subtle border
$color=new ImagickPixel();
$color->setColor("rgb(220,220,220)");
$im->borderImage($color,1,1);
// Output the image
$output = $im->getimageblob();
$outputtype = $im->getFormat();
header("Content-type: $outputtype");
echo $output;

gmail dot com at james dot ellis (2007-10-07 16:41:46)

In case anyone is wondering about some examples for Imagick usage, take a look at Mikko Koppanen's blog at http://valokuva.org/?cat=1.

易百教程