Autor | Zpráva | ||
---|---|---|---|
šárinka Profil |
#1 · Zasláno: 24. 7. 2008, 15:56:29
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 |
#2 · Zasláno: 24. 7. 2008, 16:16:21
zjistil jsem že je to úplná hovadina :) nemohli by jste mi to přepsat aby to ořezávalo? :) moc prosím
|
||
Nox Profil |
#3 · Zasláno: 24. 7. 2008, 16:40:16
šá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 |
#4 · Zasláno: 24. 7. 2008, 16:48:53
to nedám dohromady :) nemohl bys mi prosím pomoct
|
||
šárinka Profil |
#5 · Zasláno: 24. 7. 2008, 17:05:37
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 |
#6 · Zasláno: 24. 7. 2008, 17:17:12
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 |
#7 · Zasláno: 24. 7. 2008, 18:25:49
$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 |
#8 · Zasláno: 24. 7. 2008, 18:49:07
joe
tak to napiš jednodušejc at visím jak to jde zjednodušit :) |
||
Radim Hejhal Profil |
#9 · Zasláno: 24. 7. 2008, 19:54:15 · Upravil/a: Radim Hejhal
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 |
#10 · Zasláno: 24. 7. 2008, 20:13:01
dobře, ale stejně jde to napsat i jednodušeji?
|
||
joe Profil |
#11 · Zasláno: 24. 7. 2008, 22:31:37
šá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 |
#12 · Zasláno: 24. 7. 2008, 22:49:08
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 |
||
Časová prodleva: 16 let
|
0