ФорумПрограммированиеPHP для идиотовРасширения PHP → реализация слоёв в GD, прозрачность

реализация слоёв в GD, прозрачность

  • Gandjubas

    Сообщения: 32 Репутация: N Группа: Кто попало

    Spritz 21 декабря 2007 г. 14:32


    $src1_im = imageCreateFromPng("image/picture.png");
    $src2_im = imageCreateFromPng("image/w_border.png");
    $dst_im = imagecreate(175, 33);
    imagecopy($dst_im, $src1_im, 1, 0, 1, 29, 173, 31);
    imagecopy($dst_im, $src2_im, 0, 0, 0, 0, 175, 33);
    header("Content-type: image/png");
    imagePng($dst_im);


    picture.png - просто картинка формата ПэНэГэ (тип не изменить этой картинки)
    w_border.png - рамка с круглыми краями для этой картики. То есть в файле рамка с прозрачным фоном.
    И как видно при наложении рамки на картинку, картинка исчезает.
    Или я использую неверную функцию, или что-то забыл (оттого, что не знаю просто об этом) сделать.
    Помогите!
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 21 декабря 2007 г. 19:29, спустя 4 часа 56 минут 52 секунды

    Если исходная картинка с рамком имеет прозрачность (а не цвет, который заменяется на прозрачность!), то можно (вернее, нужно) использовать функцию imagecopymerge(), в противном случае после открытия картинки необходимо обработать ее функцией imagecolortransparent (http://ru2.php.net/manual/ru/function.imagecolortransparent.php)!
  • Gandjubas

    Сообщения: 32 Репутация: N Группа: Кто попало

    Spritz 24 декабря 2007 г. 11:06, спустя 2 дня 15 часов 36 минут

    Странно. С ПэНэГэ эту штуковина не сработала. А с обычным ГИФом прокатило.
    Спасибо, Кендо!
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 24 декабря 2007 г. 13:28, спустя 2 часа 21 минуту 51 секунду

    … в качестве отступления и с риском навлечь на себя гнев должен сказать, что правильным произношением будет "пинг", "джэй-пег" и "джиф".
    "PHP in a Nutshell" by Paul Hudson =)
    Это было лирическое отступление :)
    В смысле, мой метод с png не прошел или Ваш?
  • Gandjubas

    Сообщения: 32 Репутация: N Группа: Кто попало

    Spritz 25 декабря 2007 г. 9:43, спустя 20 часов 15 минут 7 секунд


    Не согласен только с "пинг". Думаю, что правильней "пиэнджи". Хотя принимая во внимание орфоэпику русского языка, "пинг" приемлем.


    $src1_im = imageCreateFromPng("image/wonder.png");
    $src2_im = imageCreateFromGif("image/w_border.gif");
    $dst_im = imagecreatetruecolor(175, 33);
    imagecopymerge($dst_im, $src1_im, 1, 1, 1, 29, 173, 31, 100);
    imagecopymerge($dst_im, $src2_im, 0, 0, 0, 0, 175, 33, 100);
    header("Content-type: image/png");
    imagePng($dst_im);
    imageDestroy($dst_im);
    imageDestroy($src1_im);
    imageDestroy($src2_im);

    Если в этом коде использовать не джиф (в качестве картинки с прозрачностью), а пинг (с соответствующеё функцией), то не прокатывает. А с джифом всё ништяк. Может дело в пинге? И там прозрачность заменена цветом. Хотя я сохранял её с прозрачностью (PNG-24).
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 25 декабря 2007 г. 12:32, спустя 2 часа 49 минут 15 секунд

    Выложи где-нибудь картинки, а то я ничего не могу понять :)
  • Gandjubas

    Сообщения: 32 Репутация: N Группа: Кто попало

Пожалуйста, авторизуйтесь, чтобы написать комментарий!