Autor Zpráva
mackopu
Profil
Potřebuji do HTML kódu automaticky vypsat rozměry skriptem resiznutého obrázku.
Zatímco tohle funguje:
<?php

$size = getimagesize ("img.jpg");
echo "<img src="img.jpg" {$size[3]}>";
?>

Tohle nefunguje:
<?php

$size = getimagesize ("resize.php?max=100&pic=img.jpg");
echo "<img src="resize.php?max=100&pic=img.jpg" {$size[3]}>";
?>
Jak to elegantně zařídit?
djlj
Profil
Výstupem resize.php?max=100&pic=img.jpg je pravděpodobně php kód.
mackopu
Profil
Výstupem je resiznutý JPG obrázek, jehož delší strana je určena proměnnou max.
Str4wberry
Profil
mackopu
Hotové řešení Tvého problému — http://php.vrana.cz/doplneni-rozmeru-obrazku.php
tiso
Profil
mackopu - rozmysli si či ti skript resize má vypísať meno obrázku, alebo vypisovať jeho rozmery, alebo meniť rozmery obrázku... Pri rovnakých parametroch môže robiť iba jednu z týchto vecí.
Mike8748
Profil
>> getimagesize ("resize.php?max=100&pic=img.jpg");

ta funkce pracuje s file systemem, takze resize.php neprojde php parserem, a nevrati tedy zadny obrazek

pokud to chces pouzivat takhle, tak je treba odkazovat na to http://neco/resize.php, a to je jeste treba mit zapntury URL wrappery
mackopu
Profil
Asi si nerozumíme.
Dobrá, co třeba tohle:
<?php

function RozmeryResizeImg($img,$max)
{
// výpočet rozměrů originálního obrázku
$size = getimagesize($img);
$sirka = $size[0];
$vyska = $size[1];
$ratio = $sirka/$max;
$x = Round($sirka/$ratio);
$y = Round($vyska/$ratio);
$rozmery = "width="$x" height="$y"";
return $rozmery;
};
$max = 100; // rozměr delší strany obrázku
echo "<img src="resize.php?max=$max&pic=images/img.jpg" ".RozmeryResizeImg("images/img.jpg", $max)."> ";
?>
Problém je ovšem v tom, že pokud takových obrázků mám víc, některé jsou na šířku a některé na výšku, vypsané $rozmery neodpovídají jejich skutečným rozměrům.
djlj
Profil
mackopu
Výstupem nemůže být obrázek, protože, jak už psal Mike8748, se pracuje se souborovým systémem. Zavolej to přes http.

Copak ti vypíše echo file_get_contents("resize.php?max=100&pic=img.jpg");? :)
mackopu
Profil
Ale jistě že je výstupem obrázek - viz. příklad
djlj
Profil
mackopu
Samozřejmě. Ale na tom odkazu je jiný případ, nežs doposud ve svých příspěvcích popisoval.

Něco jiného je getimagesize("resize.php?max=100&pic=img.jpg"); a getimagesize("img.jpg");. Zkus si znovu přečíst výše napsané příspěvky, zejména ten od Mike8748, třeba ti to dojde.
mackopu
Profil
Stále si nerozumíme. Chápu rozdíl, na který upozorňuješ (upozorňujete), můj problém ale není v tom, že si ten rozdíl neuvědomuji. Jen společně s vámi hledám konkrétní řešení (nejlépe pomoci univerzální fce), které by fungovalo (Str4wberry - to není to, co hledám, i když je to super, a vrana je jeden z nejlepších). A je mi - jako už mnohokrát zde (Juhů a moderátoři prominou) - divné, že mlátíme teoretickou slámu tam, kde je hned na počátku jasná výzva. Výsledkem by IMHO nemělo být vlákno, hemžící se odkazy na stránky, které "nás přinutí k zamyšlení" či několikaletému studiu - to zažívám dennodenně (a to se mi na mojí práci líbí), ale podělit se o blbej kus zdrojáku, kterej fachčí. Já jsem to udělal a taky jsem řekl, kde má slabinu. Ale je podivné, že jako žadatel o pomoc jsem dosud jediný, kdo sem nějaký kus zdrojáku umístil.
Předpokládám rovněž, že zde nemusím publikovat zdrojový kód souboru rezize.php. Nemá na práci nic jiného, než popadnout originální obrázek a vykreslit jeho zmenšeninu, aniž by ji někam fyzicky ukládal. Rovněž nechci tento příspěvek zahlcovat odkazy na funkce, které na této úrovni zpracování obrázků v PHP předpokládám. Znám je; znáte je i vy, přátelé. Jen prostě toužím po elegantním řešení problému, který jsem při nejlepší vůli nevygůglil. Buďme tedy první. Vytvořme společně funkci, která (pomocí PHP generovanému) obrázku přidělí atributy šířky a výšky v HTML kódu, aniž by ukládala nový soubor. Domnívám se, že jsem alespoň nějak začal.
Kéž to nedopadne jako už mnohokrát - nastolím problém a (narozdíl od jiných) ho nakonec sám vyřeším a o řešení se zde podělím (Rozuměj nikoliv větou "Díky všem, už jsem na to kápl" a diskuze končí [bez "zeleného" výstupu]).
tiso
Profil
mackopu - taká funkcionalita je nemožná. Ako som písal skôr - vyber si čo má ten skript robiť... Lebo buď bude skript meniť rozmery obrázku a posielať ho na výstup, alebo bude zisťovať jeho rozmery (z uloženého súboru). Robiť oboje naraz znamená volať skript 2x, čo je zbytočné plytvanie výkonom, takisto ako zmena rozmerov pri každom volaní skriptu!

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