Autor Zpráva
aaa
Profil
mám kód na resize (resize.php):

<?php
//Source
$filename = $image;
$size = "280";
// Content type
header('Content-type: image/jpeg');

// Get new sizes
list($width, $height) = getimagesize($filename);
$newwidth = $size;
$newheight = ($height/$width)*$size;

// Load
$thumb = imagecreatetruecolor($newwidth, $newheight);
$source = imagecreatefromjpeg($filename);

// Resize

imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

// Output

imagejpeg($thumb);
?> 


s výpisem klasicky:

<img src="resize.php?image='.$image.'">


kod pro waterark:

function watermarkbyimage( 
  $imagepath, //cesta k zdrojovemu jpeg obrazku
  $watermarkpath, //cesta k obrazku s watermarkem
  $outputpath, //cesta pro vystupni obrazek
  $transparency = 80, //pruhlednost watermarku (0-100)
  $Xoffset = 0, //posunuti watermarku v X souradnici 
  $Yoffset = 0, //posunuti watermarku v Y souradnici
  $Xalign = "middle", //umisteni watermarku v x souradnici
                      //lze zadat "middle", "left", "right"
  $Yalign = "bottom" //umisteni watermarku v y souradnici
                     //lze zadat "top, "middle", "bottom
)
{
  //otevreme oba zdrojove obrazky
  $image = imagecreatefromjpeg($imagepath);
  $imagew = imagecreatefromgif($watermarkpath);

  //zjistime jejich velikost
  list($watermarkWidth, $watermarkHeight) 
    = getimagesize($watermarkpath);

  list($imageWidth, $imageHeight) 
    = getimagesize($imagepath);
    
  $xpos = 0;
  $ypos = 0;
  
  //podle parametru funkce upravime promene
  //xpos a ypos
  if ($Xalign == "middle") {
      $xpos = $imageWidth/2 - $watermarkWidth/2 + $Xoffset;
  }
  
  if ($Xalign == "left") {
    $xpos = 0 + $Xoffset;
  }
  
  if ($Xalign == "right") {
    $xpos = $imageWidth - $watermarkWidth - $Xoffset;
  }
  
  if ($Yalign == "middle") {
    $ypos = $imageHeight/2 - $watermarkHeight/2 + $Yoffset;
  }
  
  if ($Yalign == "top") {
    $ypos = 0 + $Yoffset;
  }
  
  if ($Yalign == "bottom") {
    $ypos = $imageHeight - $watermarkHeight - $Yoffset;
  }
  
  //vlozime watermark do obrazku
  imagecopymerge($image, //zdrojovy obrazek
                 $imagew, //obrazek watermarku
                 $xpos, //x-souradnice, na kterou bude vlozen
                        //watermark ve zdrojovem obrazku
                 $ypos, //y-souradnice, na kterou bude vlozen
                        //watermark ve zdrojovem obrazku
                 0,
                 0, 
                 $watermarkWidth, 
                 $watermarkHeight, 
                 $transparency); //pruhlednost
  //ulozime obrazek do souboru, parametr 100 nastavuje 
  //uroven komprese na nejmene ztratovou kompresi
  imagejpeg($image, $outputpath, 100); 
}


+ default výpis:

watermarkbyimage("source.jpg", "watermark.gif", "output.jpg", 
                   10, 10, "top", "right"); 


teď nevim jak to dát dohromady aby to fungovalo s onair resizem... díky moc...
Alphard
Profil
ta funkce pro vodoznak ukládá cílový obrázek a to by měla dělat i ta funkce pro zmenšování (současný stav resize on fly je velice neefektivní)
upravte resize pro ukládání, funkci vodoznak zavolejte po ní a pak normálně načtěte obrázek
aaa
Profil
resize nechci dělat tak že se bude image ukládat... u stránek neočekává žádná závratná navštěvovanost, běhá to krásně rychle na serveru na kterém to je... pak když bude třeba thumb zvětšit, tak by byl resize s ukládáním na nic. jde mi o to jak napasovat do onfly resize vodotisk... ať už je to jakým koliv skriptem...
aaa
Profil
abych upřesnil. resize nedělá thumby ale resize mezi th a velkým obrázkem... ( http://czantik.justart.org/?type_place=goods_detail&id=550&img=images/ 20080917191043-13.jpg )
aaa
Profil
//smazáno
Alphard
Profil
je to převážně copy&paste
za imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
se vloží podstatná část těla té funkce až po imagejpeg() a zakončí se imagejpeg($thumb);
samozřejmě bude potřeba synchronizovat názvy společných proměnných

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0