©
本文档使用 PHP中文网手册 发布
[#1] 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 = 0 ; $x < $width ; $x++){
$matrix_org[$x] = array();
$matrix_mrk[$x] = array();
}
for( $x = 0 ; $x < $width ; $x++ )
{
for( $y = 0 ; $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;
}
?>
[#2] 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.
[#3] 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->setResolution( 300, 300 );
$im->readImage( "test.pdf" );
?>
[#4] 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); }
[#5] 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;
[#6] 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.