Nahrání, zmenšení obrázků na serveru ()

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

Zdravim.
Nette 2.0.3. Mám formulář kterým se snažím nahrát obrázek na server:

	protected function createComponentUploadPictureForm()
	{
		$form = new Nette\Application\UI\Form;

$form->addUpload('avatar', 'Obrázek:')
    ->addRule(Form::IMAGE, 'Obrázek musí být JPEG, PNG nebo GIF.')
        ->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 1MB', 1 * 1024 * 1024 /* v bytech */);

		$form->addSubmit('send', 'Nahrat obrazek');

		$form->onSuccess[] = callback($this, 'uploadPictureFormSubmitted');
		return $form;
	}

a následně obrázek zmenšit a uložit pod zadaným jménem:
Obrázek by se mel jmenovat podle obsahu proměnné:

	public function uploadPictureFormSubmitted($form)
	{
	   $values = $form->getValues();
echo $values['avatar']->getName();
//echo $values['avatar']->getType();  //nefunguje - proč?
print_r( $values );
	}

Jak dokážu zjistit příponu souboru když ->getType() nefunguje?
Obrázek chci uložit pod vlastním jménem

JakubTN
Bronze Partner | 49
+
0
-

Nebude to tym, ze v API sa ziadna metoda getType() nenachadza?

Priponu dokazes zistit napr. takto:

<?php
$pripona = pathinfo($values['avatar']->getSanitizedName(), PATHINFO_EXTENSION);
?>
22
Člen | 1478
+
0
-

tak mělo by fungovat $values['avatar']->getContentType(), pokud máš na serveru splinfo https://api.nette.org/…oad.php.html#91

Editoval 22 (3. 8. 2012 14:22)

h4kuna
Backer | 740
+
0
-

A proč chceš typ obrázků když v titulku máš zmenšení obrázku?

typ řešit nemusíš Nette si s tím poradí.

<?php
$img = $values['avatar']->toImage();// vrátí objekt \Nette\Image
?>

Zpracování obrázků

Ukázka:

<?php
// $foo, $bar jsou maximální rozměry obrázku,
$img->resize($foo, $bar, Image::SHRINK_ONLY);
$img->save($path);
?>
motorcb
Člen | 552
+
0
-

h4kuna:
Jenze jak vemu ??? $path ?? Nooo. Tam potrebuju adresa/nazev_obrazku.pripona

Takže kvůli tomu potřebuju typ obrázku :)

h4kuna
Backer | 740
+
0
-

To co psal JakubTN ti nestačí?

Priponu dokazes zistit napr. takto:

<?php
$pripona = pathinfo($values['avatar']->getSanitizedName(), PATHINFO_EXTENSION);
?>
<?php
$values['avatar']->getSanitizedName(); // davá jméno pro filesystem
?>

Případně $values[‚avatar‘]->getName() ti dává originální jméno.

Nevím co v tom hledáš, ale určitě ti chci pomoct.

motorcb
Člen | 552
+
0
-

h4kuna:
Ano, odpověď JakubTN (moc děkuji) byla dokonalá, jen Tvoje odpověď mi přišla trošku zcestná…

Bohužel mi nahraný gif obrázek (který se hejbe) uloží jako statický gif obrázek.
Nevěděl by někdo jak to vyřešit aby nahraný gif obrázek se i nadále hejbal (točící zeměkoule se bude točit)?

$pripona = pathinfo($values['avatar']->getSanitizedName(), PATHINFO_EXTENSION);
$image = $values['avatar']->toImage();
$image->resize(100, NULL);
$image->save( "soubor.".$pripona );
Jan Mikeš
Člen | 771
+
0
-

Pokud to resizujes tak se ti ten gif uz asi hybat nebude, aby se to hybalo i nadale ten obrazek by mel zustat stejny jako original ten co tam nahrajes.