Задачка такая, есть скрипт по уменьшению кратно картинки (лежит $old_image='/222.jpg';), например, когда новые высота и ширина картинки рассчитаны ($new_width, $new_height) :
начинаем вот делать графику:
$image_p = @imagecreatetruecolor($new_width, $new_height); // создал дескриптор полотна
$image_cr = imagecreatefromjpeg($old_image); //дескриптор изначальной картинки
imagecopyresampled($image_p, $image_cr, 0, 0, 0, 0, $new_width, $new_height, $size[0], $size[1]);// копируем идентификатор изображения в идентификатор созданнго полотна в левый верхний угол растягиваем высоты и широты...
$new_image='/111.jpg';
imagejpeg($image_p, $new_image, 75);//создали, все готово
Это УПРОЩЕННАЯ схема работы скрипта.
Вот я уже всяко пробывал, но не получается сделать задним фоном для полученной картинки тень. Пробывал ее сделать при помощи PNG файла в виде уголка т.е. тени правого нижнего угла, но не получается.
думал сделаю сначала вот так:
$new_width_sh=$new_width+5;
$new_height_sh=$new_height+5;
$image_p = @imagecreatetruecolor($new_width_sh, $new_height_sh);
т.е. сейчас картинка растянется не на все полотно а справа и снизу останется полоска в 5 пикселей и в нее надо как то засунуть тень.
Вопрос встал, как вот это полотно $image_p сделать не полотном, которое делается черным по умолчанию командой imagecreatetruecolor, а как то по другому можно было бы взять готовый рисунок, но взять его нельзя так как его размеры зависят от размеров исходной уменьшаемой картинки и они все разные.
Может я запутанно конечно все обрисовал, но вдруг все же кто - нибудь делал тень для картинки!!! :)))
Спустя 2 часа, 19 минут, 22 секунды (6.04.2011 - 18:24) sergeiss написал(а):
Сделай просто черный (серый) прямоугольник (картинку) такого же размера, как и исходная картинка. Размести её ниже (z-Index) основной картинки и ниже-правее на нужную величину. И получишь тень. Причем, можешь сделать эту тень и с закруглеными уголками, и полупрозрачную - как захочешь, так и будет. Зависит только от твоих фантазии и желания.
Спустя 6 часов, 57 минут, 49 секунд (7.04.2011 - 01:21) GET написал(а):
sergeiss
Спасибо, идея не плохая, но намеренно работаю с IE 6, он не поддерживает z-Index, к тому же эту картинку придется каждый раз новую делать теми же средствами php т.к. картинки всегда разные по размеру...
Спасибо, идея не плохая, но намеренно работаю с IE 6, он не поддерживает z-Index, к тому же эту картинку придется каждый раз новую делать теми же средствами php т.к. картинки всегда разные по размеру...
Спустя 1 час, 16 минут, 5 секунд (7.04.2011 - 02:38) kirik написал(а):
Цитата (A.B.C. @ 6.04.2011 - 17:21) |
намеренно работаю с IE 6 |
М'сье знает толк в извращениях :)
тут код
/** уворовал отсюда http://snipplr.com/view/12981/php-create-drop-shadow-on-image/ **/
/* offset of drop shadow from top left */
define("DS_OFFSET", 5);
/* number of steps from black to background color */
define("DS_STEPS", 10);
/* distance between steps */
define("DS_SPREAD", 1);
/* define the background color */
$background = array("r" => 255, "g" => 255, "b" => 255);
$src = '/tmp/a.jpg';
if(isset($src) && file_exists($src)) {
/* create a new canvas. New canvas dimensions should be larger than the original's */
list($o_width, $o_height) = getimagesize($src);
$width = $o_width + DS_OFFSET;
$height = $o_height + DS_OFFSET;
$image = imagecreatetruecolor($width, $height);
/* determine the offset between colors */
$step_offset = array("r" => ($background["r"] / DS_STEPS), "g" => ($background["g"] / DS_STEPS), "b" => ($background["b"] / DS_STEPS));
/* calculate and allocate the needed colors */
$current_color = $background;
for ($i = 0; $i <= DS_STEPS; $i++) {
$colors[$i] = imagecolorallocate($image, round($current_color["r"]), round($current_color["g"]), round($current_color["b"]));
$current_color["r"] -= $step_offset["r"];
$current_color["g"] -= $step_offset["g"];
$current_color["b"] -= $step_offset["b"];
}
/* floodfill the canvas with the background color */
imagefilledrectangle($image, 0,0, $width, $height, $colors[0]);
/* draw overlapping rectangles to create a drop shadow effect */
for ($i = 0; $i < count($colors); $i++) {
imagefilledrectangle($image, DS_OFFSET, DS_OFFSET, $width, $height, $colors[$i]);
$width -= DS_SPREAD;
$height -= DS_SPREAD;
}
/* overlay the original image on top of the drop shadow */
$original_image = imagecreatefromjpeg($src);
imagecopymerge($image, $original_image, 0,0, 0,0, $o_width, $o_height, 100);
/* output the image */
header("Content-type: image/jpeg");
imagejpeg($image, "", 100);
/* clean up the image resources */
imagedestroy($image);
imagedestroy($original_image);
}
Спустя 1 час, 9 минут, 31 секунда (7.04.2011 - 03:47) GET написал(а):
kirik, спааасибо дружище! Вы какой уже раз меня выручаете...поверьте вы не просто помогли добавить тень - вы помогли сделать мир еще прекраснее
Спустя 6 часов, 7 минут, 16 секунд (7.04.2011 - 09:54) Zerstoren написал(а):
Если делать так чтоб было красиво и работало в ИЕ) То прошу тему с хабра и либу
Imagick http://habrahabr.ru/blogs/php/43511/
Но либа не везде установлена.
Imagick http://habrahabr.ru/blogs/php/43511/
Но либа не везде установлена.
Спустя 2 часа, 15 минут, 7 секунд (7.04.2011 - 12:09) GET написал(а):
Сделал скрипт своими ручками...посмотрел, как делаются и вот сделал свой. Очень все устраивает тень правильная, работает в 6 IE
Спустя 1 месяц, 16 дней, 23 часа, 20 минут, 15 секунд (24.05.2011 - 11:30) ant3627 написал(а):
A.B.C.
Я вижу, вы знаете проблемы IE6 - (не поддерживает z-Index),
может подскажете и другие проблемы. В частности меня интересует можно ли зафиксировать позицию надписи на странице с помощью css. Или надо искать другой способ?
Я вижу, вы знаете проблемы IE6 - (не поддерживает z-Index),
может подскажете и другие проблемы. В частности меня интересует можно ли зафиксировать позицию надписи на странице с помощью css. Или надо искать другой способ?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.