сделать большее изображение, сшивая другие вместе - PullRequest
1 голос
/ 29 июля 2009

Я хочу создать приложение, которое получит фотографии из ваших профилей друзей, например, из вашей учетной записи в Facebook, MySpace или Twitter, и сделает из них изображение. Я уже знаю, как использовать API этих социальных сетей для получения URL-адреса изображения, вопрос в том, как их "сшить".

Если вы знаете, как это сделать, используя определенный класс в Zend или PEAR, это будет здорово, поскольку именно это я и использую.

Спасибо.

Ответы [ 3 ]

1 голос
/ 30 июля 2009

Я бы взглянул на интеграцию Imagemagick в ваше решение

http://us3.php.net/imagick

Я им не пользуюсь, но, посмотрев на примеры, он начинается примерно так:

<?php
/* Create the big image. */
$im = new Imagick();
$im->newPseudoImage(500, 500, "white");

/* Create the small image. */
$faceImg = new Imagick('face.jpg');


?>

Я не вижу, как наложить $ faceImg на $ im, но imagemagick обладает функциональностью. Если привязки PHP недостаточно хороши, вы всегда можете использовать версию ImageMagick для командной строки.

0 голосов
/ 14 августа 2009

Я думаю, что в магии изображений есть команда для сшивания изображений

convert 1.jpg 2.jpg - повернуть 90 - добавить 270 final.jpg

Я думаю, это то, что вы ищете

0 голосов
/ 30 июля 2009

A очень базовый подход состоит в том, чтобы взять ваше целевое изображение (изображение, которым вы хотите, чтобы ваше синтезированное изображение выглядело) и вырезать его в меньшие изображения в набор изображений, который мы можем назвать T.

  1. Найти «средний цвет» каждого изображения в T.

  2. Возьмите ваш набор изображений друзей, давайте назовем этот набор F и найдем «средний цвет» каждого из них.

  3. Теперь сопоставьте каждое изображение в T с изображением в F, чтобы расстояние между цветами было как можно меньше. Здесь вам нужно будет рассмотреть, разрешаете ли вы использовать одно и то же изображение в F для нескольких изображений в T.

Немного менее базовый подход (при использовании тех же наборов, что и выше):

  1. Среднее значение фильтра каждого изображения по T и F (как при размытии их)

  2. Сопоставьте каждое изображение в T с изображением в F, используя вычисления наименьших квадратов.

Другие более продвинутые подходы, которые я могу придумать, но более сложные по математике:

  • Использование анализа главных компонентов для выбора основных компонентов из F и T и их сопоставления.
  • Использование дескриптора любого типа (SIFT, SURF, ...) для поиска изображения в F на целевом изображении. Это позволит вам иметь неровную сетку или вообще не иметь сетки, где два изображения в F могут очень хорошо иметь очень разные размеры в результирующем изображении.

Что касается структуры, я не думаю, что это вообще имеет значение. Тем не менее, вам нужна хорошая библиотека изображений, чтобы упростить управление изображениями.

...