Autor Zpráva
šárinka
Profil
Ahoj, vytvořil jsem třídu pro ořezání obrázku ale nefunguje vypisuje mi chyby

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in C:\Apache\class\class.php on line 41
Warning: imagecopyresized(): supplied argument is not a valid Image resource in C:\Apache\class\class.php on line 43
Warning: imagejpeg(): supplied argument is not a valid Image resource in C:\Apache\class\class.php on line 51


<?
 
function Resizer(  
  $filename, //cesta k souboru, ktery chcete zmensit   
  $copypath, //cesta, kam zmenseny soubor ulozit  
  $MaxWidth, //sirka zmenseneho obrazku  
  $MaxHeight //vyska zmenseneho obrazku
)   
{ 
  list($OrigWidth, $OrigHeight) = getimagesize($filename); 
  
  if ($MaxWidth == 0) $MaxWidth = $OrigWidth; 
  if ($MaxHeight == 0) $MaxHeight = $OrigHeight;  
  if ($OrigWidth > $OrigHeight){ 
    $FinishPoint = $OrigHeight;
  } else { 
    $FinishPoint = $OrigWidth;
  }
  
  $image_p = imagecreatetruecolor($NewWidth, $NewHeight); //otevreme puvodni obrazek se souboru  
  $image = imagecreatefromjpeg($filename); //a okopirujeme zmenseny puvodni obrazek do noveho  
  imagecopyresized($image_p, $image, 0, 0, 0, 0, $FinishPoint, $FinishPoint, $OrigHeight, $OrigWidth);
  imagejpeg($image_p, $copypath, 100); 
}
?>


najděte mi prosím chybičky :) Děkuji :)
šárinka
Profil
zjistil jsem že je to úplná hovadina :) nemohli by jste mi to přepsat aby to ořezávalo? :) moc prosím
Nox
Profil
šárinka
Vytvoř si jeden image zdrojovej (původní obr, rozměry podle něj) a cílovej s rozměrama který chceš a pak
ten první nakopíruj do toho druhýho pomocí imagecopy (pokud pracuješ s alfakanálem tak asi imagecopymerged),
ořízne se to samo, protože obrázky (takže i onen cílovej) mají pevně určený rozměry
šárinka
Profil
to nedám dohromady :) nemohl bys mi prosím pomoct
šárinka
Profil
tak sem vytvořil toto

function Resizer(  
  $filename, //cesta k souboru, ktery chcete zmensit   
  $copypath, //cesta, kam zmenseny soubor ulozit  
  $MaxWidth, //sirka zmenseneho obrazku  
  $MaxHeight //vyska zmenseneho obrazku
)   
{ 
  list($OrigWidth, $OrigHeight) = getimagesize($filename); // zjistíme šířku a výšku obrázku
  
  /* ----- vytvvřím obrázek 600x600 ----- */
  $image_p = imagecreatetruecolor(600, 600);
  $image = imagecreatefromjpeg($filename);
  
  
  imagecopy($image_p, $filename, 0, 0, 0, 0, 600, 600);
  
  imagejpeg($image_p, $copypath, 100);
  
}


uloží se mi černej obrázek protože se mi původní obrázek neokopíruje
šárinka
Profil
tak díky za pomoc už jsem na to přišel :D měl sjem tam v ejndom místě danou blbou proměnnou

tady je funkční script

<?php
function Resizer(  
  $filename, //cesta k souboru, ktery chcete zmensit   
  $copypath, //cesta, kam zmenseny soubor ulozit  
  $MaxWidth, //sirka zmenseneho obrazku  
  $MaxHeight //vyska zmenseneho obrazku
)   
{ 
  list($OrigWidth, $OrigHeight) = getimagesize($filename); // zjistíme šířku a výšku obrázku
  
  /* ----- vytvvřím obrázek 600x600 ----- */
  $image_p = imagecreatetruecolor(600, 600);
  $image = imagecreatefromjpeg($filename);
  
  imagecopy($image_p, $image, 0, 0, 0, 0, $MaxWidth, $MaxHeight);
  
  imagejpeg($image_p, $copypath, 100);
  
}
?>
joe
Profil
$filename
$MaxWidth
$image_p
Tři typy pojmenování proměnných v tak krátkém skriptu. Nechtěl bych po tobě louskat třikrát a víckrát delší kód.
šárinka
Profil
joe
tak to napiš jednodušejc at visím jak to jde zjednodušit :)
Radim Hejhal
Profil
Myslím, že joemu šlo spíš o nesjednocený způsob zápisu názvů proměnných. Na jedné proměnné by ty způsoby vypadali asi takhle: $MaxWidth - $max_width - $maxwidth. Přehlednější je používat u všech proměnných stejný způsob zápisu. Na funkčnost to nemá vliv, jenom se to snádněji udržuje a píše - ve větším scriptu nemusíš listovat 300 řádků nahoru a hledat určitou proměnnou v kódu, abys zjistil, jestli jsi napsal malý nebo velký písmeno.
PS. A radši se nevěšej, tak zlý to zase není :o)
šárinka
Profil
dobře, ale stejně jde to napsat i jednodušeji?
joe
Profil
šárinka
Jednodušeji to asi nejde, co já vím :-) leda že bys napsal ty poslední 4 řádky na jeden, ale to je dost zbytečný.

Šlo mi o to, co psal Radim Hejhal, nauč se psát všechno stejným způsobem.

vytvořil jsem třídu
Třídu?

Třída začíná slovem class a píše se velkým písmenem a další slovo zase velkým. Proměnná začíná malým a další slovo začíná buď velkým písmenem nebo podtržítkem a dalším slovem, jako je v PHP zvykem, radší mám ale první způsob, je rychlejší na psaní a vypadá lépe :), konstanty pak jen velkým písmem a mezi slovy oddělené podtržítkem ;-) Funkce (kterou zde uvádíš) / metody se píšou stejně jako proměnné ;-)
šárinka
Profil
joe
díky za vysvělení.

Všem díky za pomoc, ikdyž sem si to vyřešil sám :) akorát joe mi napsal jaké funkce použít

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: