Domů > PHP, Programování > Vodotisk do obrázků zboží na www.babyobchod.cz

Vodotisk do obrázků zboží na www.babyobchod.cz

08.05.2009 | 510x zobrazeno

ss_boNa 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í.

image

Původní obrázek zboží – autosedačka

image

Zdrojový obrázek pro vodotisk

image

Výsledný obrázek zboží s vodotiskem, logem výrobce a URL
<?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);
  }
?>
Doporučit článek: Kliknutím na ikony můžete doporučit článek dalším lidem.
  • del.icio.us
  • Facebook
  • TwitThis
  • Google
  • Bookmarky.cz
  • Jagg
  • Topodkazy
  • Vybrali.sme
  • Topčlánky
  • Linkuj
  • Mediablog
  • E-mail this story to a friend!
1 bod2 body3 body4 body5 bodů6 bodů7 bodů (2x hlasováno, průměr: 4.00 ze 7)
Loading ... Loading ...

SMO PHP, Programování , ,

  1. Bez komentářů.
  1. Žádné zpětné odkazy