Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2015-10-01 15:28:16

  Graffi - Użytkownik

Graffi
Użytkownik
Skąd: Sulejówek
Zarejestrowany: 2005-10-03
Serwis

PHP GD i przezroczystość

witajcie Koledzy

na pewno ktoś z tym walczył a zarazem na pewno jest to proste, googlam trochę ale nie natrafian na rozwiazanie (no tak, mogę skorzystać z imagemagicka ale może nie muszę, może moge przy GD zostać)

mam sobie taki skrypcik php:
http://graffi.us/fora/DUG/gd/t1.txt

i daje on:
http://graffi.us/fora/DUG/gd/t1.php


oraz taki skrypcik:
http://graffi.us/fora/DUG/gd/t.txt

i odpowiednio jego wynik:
http://graffi.us/fora/DUG/gd/t.php


oba są troche złe :(
a mianowicie, ten pierwszy nie jest przeźroczysty odpowiednio
a ten drugi jest przeźroczysty podczas rysowania (bo ten termometr jest przeźroczysty) ale już wynik wygenerowany jest zły

co poprawiać aby termometr był przeźroczysty, aby rtęć narysowana była pod termometrem i aby sam obrazek w wyniku był też przeźroczysty (ale zamotałem :P )

obrazki składowe z których jest to rysowane to:
http://graffi.us/fora/DUG/gd/img/termometr.png

Offline

 

#2  2015-10-02 13:29:40

  Graffi - Użytkownik

Graffi
Użytkownik
Skąd: Sulejówek
Zarejestrowany: 2005-10-03
Serwis

Re: PHP GD i przezroczystość

narysowałem se ImageMagickiem :P
jakby ktoś chciał to:

Kod:

<?php

date_default_timezone_set('Europe/Berlin');

$image = new Imagick();
$image->newImage(70, 280, 'none');
$image->setImageFormat('png');

$termometr = new Imagick('img/termometr.png');
$rtec = new Imagick('img/rtec_zielona.png');


$temp=_wyjete_z_bazy_ ;

$zero=143;
$wysokoscSlupka = abs($temp*2.2);

if ($temp > 0) {
    $pozycja0 = $zero - $wysokoscSlupka;
    $wysokoscSlupka+=80;
    $textX=12;
} else {
    $pozycja0 = $zero + $wysokoscSlupka;
    $wysokoscSlupka+=(65 - $wysokoscSlupka);
    $textX=8;
}

$temperatura = new Imagick();
$temperatura->newImage(30, $wysokoscSlupka, new ImagickPixel("rgb(104, 191, 49)")); // rgba(r, g, b, a);

$image->compositeImage($temperatura, $temperatura->getImageCompose(), 20, $pozycja0);
$image->compositeImage($termometr, $termometr->getImageCompose(), 0, 0);

$draw = new ImagickDraw();

$draw->setFillColor('black');

$draw->setFont('fonts/Arial_Black.ttf');
$draw->setFontSize(12);

$image->annotateImage($draw, $textX, 248, 0, $temp.'°C');


if (isset($_GET['base64'])) {
    ob_start();
    echo $image;
    $contents = ob_get_contents();
    ob_end_clean();
    echo base64_encode($contents);

} else {
    header('Content-type: image/png');
    echo $image;
}

?>

Ostatnio edytowany przez Graffi (2015-10-02 13:30:21)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.007 seconds, 10 queries executed ]

Informacje debugowania

Time (s) Query
0.00009 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00115 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.138.124.28' WHERE u.id=1
0.00068 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.124.28', 1732372959)
0.00021 SELECT * FROM punbb_online WHERE logged<1732372659
0.00077 DELETE FROM punbb_online WHERE ident='3.143.218.115'
0.00030 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=27769 AND t.moved_to IS NULL
0.00037 SELECT search_for, replace_with FROM punbb_censoring
0.00116 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=27769 ORDER BY p.id LIMIT 0,25
0.00089 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=27769
Total query time: 0.00566 s