Vodotisk do obrázků zboží na www.babyobchod.cz
Na adrese www.babyobchod.cz je zprovozněn internetový obchod se zaměřením na prodej zboží pro kojence, nemluvňata a děti. V tomto internetovém obchodě, který jsem firmě Artex K, s.r.o. naprogramoval na zakázku, chtěli majitelé automatiky k obrázku vložit vodotisk. Obrázek se nechá připojit k nově vytvářejícímu zboží a nebo k již existujícímu. Zaserfoval jsem po internetu a narazil na pár zdrojáků, které jsem si přepsal do funkce použitelné v jádru obchodu. Výsledná funkce, jejíž zdrojový kód je k dispozici níže, zajišťuje hned 4 úkony:
- přerozměruje (převzorkuje) vstupní obrázek na požadované rozlišení (zanechá poměry stran)
- vloží do levého dolního rohu černě orámovaný text na bílém pozadí (text představuje URL obchodu)
- vloží do pravého dolního rohu černě orámované logo (například logo výrobce zboží)
- vloží vodotisk (sloučí vstupní obrázek s externím představující například název nebo logo obchodu)
Musíme mít zajištěno, že obrázek se kterým chceme pracovat, je uložen ve správném adresáři (proměnné v úvodu funkce). Dále správně nastavit cestu k obrázku s logem výrobce a k obrázku pro vodotisk. Logo výrobce se pozicuje od pravého dolního rohu, takže doporučuji, aby nemělo velké rozlišení, maximálně 1/3 obrázku zboží. Obrázek pro vodotisk by měl být menší než požadované výsledné rozlišení, jinak se tam nevejde. Vodotisk by měl být obrázek typu GIF, kde můžeme zajisti průhledné pozadí.
<?php // Převzorkuje obrázek na požadované rozlišení, vloží orámovaný text, logo a vodotisk function prevzorkovat($nazev_souboru, $nazev_souboru_logo) { $adr_uloziste_souboru = "zaloha_obr"; $adr_uloziste_souboru_loga = "zaloha_obr/loga"; $adr_uloziste_vysled_obr = "obr"; $nazev_souboru_vodotisk = 'bo.gif'; $poradovana_sirka = 550; $poradovana_vyska = 550; $url_obchodu = "www.babyobchod.cz"; $soubor = $adr_uloziste_souboru."/".$nazev_souboru; list($sirka, $vyska) = getimagesize($soubor); if ($sirka > $vyska) { $nova_sirka = $poradovana_sirka; $nova_vyska = $vyska * ($poradovana_sirka / $sirka); } else { $nova_vyska = $poradovana_vyska; $nova_sirka = $sirka * ($poradovana_vyska / $vyska); } $zmenseny = imagecreatetruecolor($nova_sirka, $nova_vyska); $zdroj = imagecreatefromjpeg($soubor); imagecopyresampled($zmenseny, $zdroj, 0, 0, 0, 0, $nova_sirka, $nova_vyska, $sirka, $vyska); $cerna_barva = imagecolorallocate($zmenseny, 0, 0, 0); $bila_barva = imagecolorallocate($zmenseny, 255, 255, 255); imagefilledrectangle($zmenseny, 3, ($nova_vyska - 21), 129, ($nova_vyska - 3), $bila_barva); imagerectangle($zmenseny, 3, ($nova_vyska - 21), 129, ($nova_vyska - 3), $cerna_barva); imagestring($zmenseny, 3, 7, ($nova_vyska - 19), $url_obchodu, $cerna_barva); if ($nazev_souboru_logo != "") { $soubor_logo = $adr_uloziste_souboru_loga."/".$nazev_souboru_logo; list($sirka_logo, $vyska_logo) = getimagesize($soubor_logo); if ($nazev_souboru_vodotisk != "") { $soubor_vodotisk = $adr_uloziste_souboru_loga."/".$nazev_souboru_vodotisk; list($sirka_vodotisk, $vyska_vodotisk) = getimagesize($nazev_souboru_vodotisk); $zdroj_logo = imagecreatefromjpeg($soubor_logo); $zdroj_vodotisk = imagecreatefromgif($soubor_vodotisk); imagecopymerge($zmenseny, $zdroj_logo, ($nova_sirka - $sirka_logo - 3), ($nova_vyska - $vyska_logo - 3), 0, 0, $sirka_logo, $vyska_logo, 100); imagerectangle($zmenseny, ($nova_sirka - $sirka_logo - 3), ($nova_vyska - $vyska_logo - 3), ($nova_sirka - 3), ($nova_vyska - 3), $cerna_barva); $xko = ($nova_sirka/2)-($sirka_vodotisk/2); $yko = ($nova_vyska/2)-($vyska_vodotisk/2); imagecopymerge($zmenseny, $zdroj_vodotisk, $xko, $yko, 0, 0, $sirka_vodotisk, $sirka_vodotisk, 37); } } imagejpeg($zmenseny, $adr_uloziste_vysled_obr."/".$nazev_souboru); } ?>






































































Poslední komentáře