Fluent interface pro Nette\Image

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
finwe
Člen | 58
+
0
-

Slepě jsem předpokládal, že fluent interface pro Nette\Image bude fungovat, leč většina metod nic nevrací. S fluent interface by to bylo ještě o fous elegantnější:

<?php
		Image::fromFile('image.jpg')->resize(200, 133)->save('thumbnail.jpg');
?>
Honza Marek
Člen | 1664
+
0
-

Souhlas.

Jod
Člen | 701
+
0
-

jóha, ale po to resize to funguje ni? :D

Honza Marek
Člen | 1664
+
0
-

podle api by nemělo

David Grudl
Nette Core | 8170
+
0
-

K některým funkcím fluent přidám.

Honza Marek
Člen | 1664
+
0
-

Hezké. Ještě mě napadlo, že by metoda calculateSize mohla být statická, aby se dala spočítat velikosti náhledu bez nutnosti otevírat ten obrázek. Jen by se musely upravit parametry třeba na $oldWidth, $oldHeight, $newWidth, $newHeight, $flags. Nebo nemá otevírání obrázku (createimagefrom…) dopad na výkon?

rokerkony
Člen | 122
+
0
-

Honza Marek napsal(a):

Hezké. Ještě mě napadlo, že by metoda calculateSize mohla být statická, aby se dala spočítat velikosti náhledu bez nutnosti otevírat ten obrázek. Jen by se musely upravit parametry třeba na $oldWidth, $oldHeight, $newWidth, $newHeight, $flags. Nebo nemá otevírání obrázku (createimagefrom…) dopad na výkon?

Chtěl bych stejně jak Honza pokud by šlo udělat aby calculateSize byla statická a dala se tedy volat i pro jiné obrázky… :-) co vy na to???

kutilm
Člen | 21
+
0
-

rokerkony napsal(a):

Chtěl bych stejně jak Honza pokud by šlo udělat aby calculateSize byla statická a dala se tedy volat i pro jiné obrázky… :-) co vy na to???

Také by se mi to líbilo.
Obrázky zmenšuji, až když je o ně zájem přes URL, například: example.cz/…/W300/image.jpg vrací obrázek široký 300px. Nicméně do HTML bych rád dal i dopočítanou výšku: <img src=".../W300/image.jpg" width="300px" height="?" />.
Děkuji

David Grudl
Nette Core | 8170
+
0
-

A nebude to moc velký BC break?

Honza Marek
Člen | 1664
+
0
-

Asi ani ne. Nedokážu si představit rozumné využití té metody z venku, když není statická.

Představu o té metodě mám asi takovou:

/**
 * @return array
 */
public static calculateSize($oldWidth, $oldHeight, $newWidth, $oldWidth, $flags);

Ostatně se může jmenovat nějak jinak a současná metoda calculateSize by ji volala.

David Grudl
Nette Core | 8170
+
0
-

Spíš se ptám z pragmatického pohledu, jestli současnou calculateSize vůbec někdo používá.

Změnu postnu.

Petr Motejlek
Člen | 293
+
0
-

Z pragmatického pohledu ji používám třeba já ;). Mám control, který si vezme id obrázku, maximální šířku a výšku, vytáhne si ten obrázek z databáze, udělá z něj Image, nad ním si zavolá calculateSize() a poté vybleje tag . Je to drobet krkolomné, ale nic lepšího mě, v případě, že ukládám všechny obrázky v databázi, zatím nenapadlo. Jsem otevřen návrhnům ;).

Aurielle
Člen | 1281
+
0
-

Calculatesize jsem si přepsal do statické verze a používám ho k výpočtu velikosti obrázku v tomto kódu.

rokerkony
Člen | 122
+
0
-

rozhodne to jde vyuzit i nestaticky… ale staticka metoda bude v tomto pripade vhodnejsi a mozna se ji dostane vetsiho vyuziti :-)

David Grudl
Nette Core | 8170
+
0
-

Každopádně calculateSize je už statická metoda, enjoy.