Правильно ли использовать imageapi_image_overlay? - PullRequest
0 голосов
/ 29 ноября 2011

Я хочу использовать модуль Actions для imagecache для создания наложений изображений. Пользователь должен загрузить одно изображение, и я хочу масштабировать и обрезать его, а затем наложить поверх него прозрачный PNG.

Я установил модули drupal 6 и ImageCache и Действия с ImageCache . Действия ImageCache определяют функцию imageapi_image_overlay.

Я создал пресет ImageCache с именем 590x160_Newsletter для масштабирования и обрезки изображения.

Инструмент изображения - GD

Вот что я хочу сделать: пользователь загружает изображение. Это изображение масштабируется и обрезается с помощью предустановки ImageCache. Затем я хочу наложить его на изображение (PNG с прозрачностью). Я не могу выбрать это в качестве предустановки, потому что это зависит от некоторых других настроек в узле, какое оверлейное изображение я хочу использовать.

Масштаб и кадрирование работают хорошо, но $image2 после вызова imageapi_image_overlay остается тем же (тот же путь, то же изображение), хотя и говорит "успех" Но это должно быть изменено так, как в справочнике API написано

Вот тестовый код

/* PHP */
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

print "<body style=\"background: lightgreen\">";
$path = "path/to/source/image.jpg";
$opath = "path/to/overlay/image.png";
print '<xmp>';
$image = imageapi_image_open($path);
print '$image: ' . print_r($image,1) . "\n";

$image2 =imageapi_image_open(imagecache_create_path('590x160_Newsletter',  $path));
print '$image2: ' . print_r($image2,1) . "\n";

$overlay = imageapi_image_open($opath);
print imageapi_image_overlay($image2, $overlay, 0, 0, 100, TRUE) ? "success\n" : "failure\n";

print '$image2 after: ' . print_r($image2,1) . "\n";
print '$overlay: ' . print_r($overlay,1) . "\n";
print '</xmp>';
print "<img src=\"$image->source\" />";
print "<img src=\"$image2->source\" />";
print "<img src=\"$overlay->source\" />";

1 Ответ

0 голосов
/ 29 ноября 2011

Я обнаружил:

Вы должны сохранить изображение для себя:

Объект $image2 имеет два значимых элемента: $image2->source, который является именем файла исходного изображения и$image2->resource, который является файловым ресурсом, это ресурс изображения PHP.Этот ресурс изменяется в процессе, но не сохраняется на диск.

imagejpeg ($image2->resource, $images2->source); сохранит файл в формате JPG с тем же именем.

...