- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
function test($method)
{
$picfile = 'pic1.png';
$bgfile = 'output.png';
$background = 'pic2.png';
$foreground = 'pic3.png';
if ($method == 'Imagick') {
$img = new Imagick($picfile);
$mask = new Imagick($background);
$img->compositeImage($mask, imagick::COMPOSITE_COPYOPACITY, 0, 0);
$mask->destroy();
$overlay = new Imagick($foreground);
$img->compositeImage($overlay, imagick::COMPOSITE_OVER, 0, 0);
$overlay->destroy();
$img->setImageFormat('png');
file_put_contents($bgfile, $img->getImageBlob()); // $img->writeImage($bgfile) работает медленнее
$img->destroy();
} else if ($method == 'Wand') {
$img = NewMagickWand();
MagickReadImage($img, $picfile);
$mask = NewMagickWand();
MagickReadImage($mask, $background);
MagickCompositeImage($img, $mask, MW_CopyOpacityCompositeOp, 0, 0);
DestroyMagickWand($mask);
$overlay = NewMagickWand();
MagickReadImage($overlay, $foreground);
MagickCompositeImage($img, $overlay, MW_OverlayCompositeOp , 0, 0);
DestroyMagickWand($overlay);
MagickSetImageFormat($img, 'png');
file_put_contents($bgfile, MagickGetImagesBlob($img)); // ditto
DestroyMagickWand($img);
} else {
$cmdline = 'convert -compose copy-opacity ' . $picfile . ' ' . $background . ' -composite';
$cmdline .= ' -compose src-over ' . $foreground . ' -composite ' . $bgfile;
exec($cmdline);
}
}
$methods = array('Imagick', 'Wand', 'Command line');
foreach ($methods as $m) {
$start_time = microtime(true);
for ($i = 0; $i < 4; $i++) {
test($m);
}
$elapsed_time = microtime(true) - $start_time;
echo 'Method: ' . $m . '; elapsed ' . strval($elapsed_time) . PHP_EOL;
}
bormand 17.01.2013 07:06 # +1
ВПС слабоват?
inkanus-gray 17.01.2013 15:04 # 0
scriptin 17.01.2013 15:31 # +2
inkanus-gray 20.01.2013 09:18 # +1
Топите, несмешной код запостил.
tirinox 18.01.2013 03:05 # +2
Тоже мне новость.