图像处理 (ImageMagick)

添加笔记

用户贡献笔记 5 笔记

17
mlong-php at mlong dot us
16 年前
这是一个关于如何获取已在字符串中(例如,来自数据库)的图像,并调整其大小,添加边框,然后打印出来的示例。 我将此用于显示经销商徽标

// 从 base64 解码图像
$image=base64_decode($imagedata);

// 创建 Imagick 对象
$im = new Imagick();

// 将图像转换为 Imagick
$im->readimageblob($image);

// 创建最大为 200x82 的缩略图
$im->thumbnailImage(200,82,true);

// 添加一个细微的边框
$color=new ImagickPixel();
$color->setColor("rgb(220,220,220)");
$im->borderImage($color,1,1);

// 输出图像
$output = $im->getimageblob();
$outputtype = $im->getFormat();

header("Content-type: $outputtype");
echo $output;
0
carlosvanhalen7 at gmail dot com
11 年前
这是一个方便的函数,它可以找到特定像素的第一个出现位置。您可以设置要查找颜色的容差,或者将其设置为 0 如果您想要精确匹配

<?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;
}

?>
-1
Eero Niemi (eero at eero dot info)
16 年前
要加载图像(通常是矢量图像,如 PDF)的比图像默认分辨率更高的分辨率,您必须在读取文件之前设置分辨率,如下所示

<?php
$im
= new Imagick();
$im->setResolution( 300, 300 );
$im->readImage( "test.pdf" );
?>
-15
aem at teletype dot ru
12 年前
要使用 phpize 配置和构建 imagick 扩展,您必须首先安装 libmagickwand-dev 和 libmagickcore-dev。

例如,“sudo apt-get install libmagickwand-dev libmagickcore-dev”,然后 phpize 和 ./configure。
-18
mlong-php at mlong dot us
16 年前
thumbnailImage 的拟合功能不能像预期的那样工作。 相反,使用以下方法创建最大为 200x82 的缩略图

// 创建最大为 200x82 的缩略图
$width=$im->getImageWidth();
if ($width > 200) { $im->thumbnailImage(200,null,0); }

$height=$im->getImageHeight();
if ($height > 82) { $im->thumbnailImage(null,82,0); }
To Top