2013-12-04 2 views
0

Я искал в google, но я не могу найти решение.PHP imagick или GD слияние изображения из массива

Мне нужно слить несколько файлов png через php. Все работает, когда я declarate путь к изображению, как это:

<?php 
    $img1 = new Imagick('face.png'); 
    $img2 = new Imagick('glasses-1.png'); 
    $img1->compositeImage($img2, imagick::COMPOSITE_DEFAULT, 0, 0); 
    $img1->setImageBackgroundColor('transparent'); 
    $img_wynik = $img1->flattenImages(); 
    $img_wynik->setImageFormat('png'); 
    $img_wynik->writeImage('avatar.png'); 
    header('Content-type: image/png'); 
    echo $img_wynik; 
    ?> 

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

Я думал, что я могу использовать простой массив, как этот

$srcImagesPath = array('glasses-1.png', 'mouth-1.png') //for example 

, а затем изменить код тестирования на этот

$img2 = new Imagick ($srcImagesPath) 

но это всегда дает мне сливались face.png и последнее изображение из массива.

Любая идея, как его построить?

+0

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

+0

foreach работает! THANKS –

ответ

0

$srcImagesPath - это массив, поэтому вам нужно указать его элемент вместо передачи самого массива. Я предполагаю, что вы хотите:

$img2 = new Imagick ($srcImagesPath[0]) 

или

$img2 = new Imagick ($srcImagesPath[1]) 
+0

нет, мне нужно объединить все изображения. Эти изображения будут выбраны пользователем, поэтому я не могу заявить, сколько они будут. Я буду разбирать эту информацию из jQuery. Надеюсь, ты понимаешь мой чистый майниш. –

0

, если у вас установлена ​​библиотека GD (если у вас есть):

$image1 = imagefrompng('glasses-1.png'); 
$image2 = imagefrompng('mouth-1.png'); 

После того, как это будет сделано, вы можете создать рамку в новое изображение с использованием:

imagecopymerge() 

Я дам вам отсортировать назначения, источники и координаты ... назвать это проблемой;)

Оттуда все, что вам нужно сделать, это вывести составное изображение в файл, используя imagepng:

imagepng($compositedImage, $path_to_filesystem_destination); 

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

+0

Это не то, что мне нужно. –

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