Nette\Image::fromFile – stále hlásí ''Image is not valid."

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

Na zkoušku tu máte tento kod:

		$urls = array(
			'http://www.dpscomputing.com/blog/wp-content/uploads/2012/03/php.jpg',
			'http://upload.wikimedia.org/wikipedia/commons/2/27/Crystal_Clear_mimetype_php.png',
			'http://www.netclues.ky/upimages/php.gif',
		);

		foreach ($urls as $url) {

			$image = \Nette\Image::fromString(file_get_contents($url));
			$image->save($_SERVER['DOCUMENT_ROOT'] . '/fromString-' . md5($url) . substr($url, strrpos($url, '.')));

		}

		foreach ($urls as $url) { // Zde to nikdy neprojde

			$image = \Nette\Image::fromFile($url); // Image is not valid
			$image->save($_SERVER['DOCUMENT_ROOT'] . '/fromFile-' . md5($url) . substr($url, strrpos($url, '.')));

		}

Nette: Poslední github verze.
Php: v5.5.0
Apache: v2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.0

Nevíte, kde by mohl být chyba a jak to řešit?

Editoval martinit (11. 7. 2013 17:27)

David Matějka
Moderator | 6445
+
0
-

Nette\Image::fromFile pouziva imagecreatefromjpeg atd., ktery nepodporujou vzdaleny soubory

MartinitCZ
Člen | 580
+
0
-

Ale já mám povolené allow_url_fopen i allow_url_include a funkce fopen() – Example #1 funguje bez problémů.

Editoval martinit (11. 7. 2013 19:37)

David Matějka
Moderator | 6445
+
0
-

no lepsi bude asi si soubor ulozit lokalne a pak s nim neco udelat :)

MartinitCZ
Člen | 580
+
0
-

@**matej21**: Však o to uložení se snažim :)

MartinitCZ
Člen | 580
+
0
-

Tak podle všeho, je to bug PHP Což je teda super …!!

David Grudl
Nette Core | 8232
+
0
-

Heh, na to jsem přišel, když jsem reportoval https://bugs.php.net/bug.php?… a Scott byl rychlejší ;)

enumag
Člen | 2118
+
0
-

Hehe, ani PHP 5.5 nelze použít dokud nevyjde pár setinkových verzí. :-)

Filip Procházka
Moderator | 4668
+
0
-

Btw, proč načítáš celý ten obrázek do paměti, když ho stejně chceš jenom uložit na disk?

enumag
Člen | 2118
+
0
-

@Filip Procházka: To je zřejmě jen ukázka a v reálné aplikaci tam má ještě nějaké operace jako resize.

MartinitCZ
Člen | 580
+
0
-

@**enumag**: Njn, ale jsem línej to přeinstalovat zpět na 5.4.x ;)

@**Filip Procházka**: Myslíš tím použít něco jako?:
file_put_contents('...../image.jpg', fopen("http://someurl/image.jpg", 'r'));

Poprvadě v Nette používám pro uložení obrázku vždy třídu Image, ikdyž s obrázkem nic nedělám.

enumag
Člen | 2118
+
0
-

@martinit: Úplně nejjednodušší to máš přes copy. ;-)

MartinitCZ
Člen | 580
+
0
-

@**enumag**: Díky, neznal jsem tuhle funkci :)

PS: Asi tento topic někam zahodtě. S Nette to nemá nic společného. Nakonec se jednalo jen o PHP 5.5.0 Bug.