|
 3 Кб |
|
| Доброго времени суток.
Возникла проблема по наложению изображений друг на друга
в Attache имеются 3 изображения DESC.gif, LINE.gif, WATER.gif
Необходимо вывести в браузер DESC.gif(подложку), на него LINE.gif (шкалу), а WATER.gif это линия которую надо растягивать от синей границы DESC.gif до случайной высоты, которая генерируется рандомно
делаю так:
<?
$im = imagecreatefromgif('desc.gif');
$stamp1 = imagecreatefromgif('line.gif');
$stamp2 = imagecreatefromgif('water.gif');
//Генерируем высоту
$marge_bottom = mt_rand(5,100);
//накладываем отметку
$sx2 = imagesx($stamp2);
$sy2 = imagesy($stamp2);
imagecopy($im, $stamp2, imagesx($im) - $sx2, imagesy($im) - $sy2 - $marge_bottom, 0, 0, imagesx($stamp2), imagesy($stamp2));
//накладываем шкалу
$sx = imagesx($stamp1);
$sy = imagesy($stamp1);
imagecopy($im, $stamp1, imagesx($im)-$sx, imagesy($im)-$sy, 0, 0, imagesx($stamp1), imagesy($stamp1));
//Выводим в браузер
header('content-type: image/gif');
imagegif($im, '', 90);
imagedestroy($im);
?>
|
Дальше ступор, как растянуть изображение water.gif по рандомной координате Y, чтобы он растягивался от синей границы, до этой координаты (т.е визуально как бы заполнял подложку от и до)? | |
|
|
|
|
|
|
|
для: chexov
(09.06.2011 в 05:13)
| | Лучше water.gif сделать шириной высотой в 20px или сколько занимает вода и растягивать от нужной точки на нужную высоту. Это потребует вычислений, но в текущей ситуации их потребуется еще больше, так как нужно вырезать этот кусочек из большого изображения, прежде чем им манипулировать.
Другой подход связан с изображением с водой на полную высоту, тогда растягивать ничего не придется, будет достаточно просто регулировать высоту водного прямоугольника. | |
|
|
|
|
 858 байт |
|
|
для: cheops
(09.06.2011 в 10:04)
| | алгоритм понятен, не хватает практических навыков, если не затруднит, покажите как это сделать?
З.Ы: я так понял, необходимо нарисовать прямоугольник WATER.gif размерами как у подложки, и уменьшать его? | |
|
|
|
|
|
|
|
для: chexov
(09.06.2011 в 10:16)
| | С таким изображением, когда у вас углы ничего не сделать... здесь как в HTML-верстке нужен либо чистый столбик воды без всего остального оформления, либо небольшой столбик из середины, без границ. | |
|
|
|
|
 473 байт |
|
|
для: cheops
(09.06.2011 в 10:24)
| | сделал чистый столбик | |
|
|
|
|
 1.1 Кб |
|
|
для: chexov
(09.06.2011 в 05:13)
| | Во вложении находится файл column.gif, вот решение с его участием
<?php
$im = imagecreatefromgif('desc.gif');
$stamp1 = imagecreatefromgif('line.gif');
$water = imagecreatefromgif('column.gif');
//Генерируем высоту
$marge_bottom = mt_rand(5,100);
// Вычисляем ширину и высоту примера водяного
// столбика
$width = imagesx($water);
$height = imagesy($water);
// Вычисляем растянутый водяной столбик
$newwidth = imagesx($water);
$newheight = imagesy($water) + imagesy($im) - $marge_bottom - 12;
// Накладываем водяной столбик
imagecopyresized($im, $water, 0, $marge_bottom, 0, 0,
$newwidth, $newheight, $width, $height);
// накладываем шкалу
$sx = imagesx($stamp1);
$sy = imagesy($stamp1);
imagecopy($im, $stamp1, imagesx($im)-$sx, imagesy($im)-$sy, 0, 0,
imagesx($stamp1), imagesy($stamp1));
//Выводим в браузер
header('content-type: image/gif');
imagegif($im, '', 90);
imagedestroy($im);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(09.06.2011 в 11:02)
| | Огромное спасибо Хеопс, теперь понял куда копать | |
|
|
|
|
|
|
|
для: chexov
(09.06.2011 в 12:02)
| | А возможно ли разделить изображение ШКАЛЫ, LINE.gif на красную зону и черную, и чтобы красная зона была как ссылка? просто возникла идея, при нажатии на красную зону выводить каментарий... возможно ли это? | |
|
|
|
|
|
|
|
для: chexov
(10.06.2011 в 04:53)
| | Хм... ну это уже средствами HTML/CSS/JavaScript нужно решать, составлять карту изображения. Или как вариант ориентироваться на flash. | |
|
|
|