2013-07-31 4 views
1

Я использую следующий код, чтобы замаскировать одно изображение на другом изображении. На выходе он дает мне изображение с черным backgroung.Imagick - Сделайте черный фон белым

Но мне нужен белый фон или прозрачный фон.

Ниже приведен код, который я использую, чтобы замаскировать одно изображение поверх другого.

<?PHP 
$destination_path = getcwd().DIRECTORY_SEPARATOR; 
$im1="image1.png"; 
$im2="image2.png"; 

$i1="$destination_path$im1"; 
$i2="$destination_path$im2"; 

$base = new Imagick($i1); 
$mask = new Imagick($i2); 

// Setting same size for all images 
$base->resizeImage(274, 275, Imagick::FILTER_LANCZOS, 1); 

// Copy opacity mask 
$base->compositeImage($mask, Imagick::COMPOSITE_DSTIN, 0, 0, Imagick::CHANNEL_ALPHA); 

$base->writeImage('output.png'); 
header("Content-Type: image/png"); 

echo $base; 
?> 

ответ

0

Попробуйте это: Background Color Белый:

<?php 
$image = new imagick("opossum.jpg"); 
$image->setimagebackgroundcolor("#fad888"); //Here you can mention the color 
$image->waveImage(20, 176); 
header("Content-Type: image/jpeg"); 
echo $image; 
?> 

Прозрачный фон:

<?php 
$im = new Imagick(); 
$im->setBackgroundColor(new ImagickPixel('transparent')); 

$im->readImage('carte_Alain2.svg'); 

$im->setImageFormat("png32"); 

header('Content-type: image/png'); 
echo $im; 
?> 

Также проверьте это ссылки:

http://php.net/manual/en/imagick.setbackgroundcolor.php

+0

Спасибо за helping.But там коды Арента, что я хочу. – user2360906

+0

Они не дают мне белого backgroung и не создают изображение с прозрачным фоном – user2360906

+0

, но он отлично работает для меня .. если я запустил код выше в моей системе! :( – TomPHP

6

Хитрость использует: $im = $im->flattenImages();:

<?php 
$im = new Imagick($filename); 

$im->setImageBackgroundColor('#ffffff'); 
$im = $im->flattenImages(); 

$im->setImageFormat("jpeg"); 
$im->setImageCompressionQuality(95); 
$im->writeImage($filename); 
+0

его не работает с файлами в формате pdf. Если вы используете pdf, он объединит все страницы в один. – Isfettcom

+0

Отлично работает для меня. Но я открываю страницы один за другим: $ im-> readImage ($ file. "[$ page]"); – Laurent

Смежные вопросы