Upload obrázku – průhlednost
- MW
- Člen | 626
Zdravím,
nahrávám obrázek přes form a následně do databáze:
if($values->fotka->isImage()) {
$img = Nette\Image::fromFile($values->fotka);
$img->resize(100, null);
$values->fotka = (string) $img;
}
Ale u průhledných pozadí (png nebo gif) to onu průhlednost
nezachová.
Jak na to prosím ?
Díky !
- David Matějka
- Moderator | 6445
bude to tim, ze toString pouziva jako defaultni typ JPEG, viz https://api.nette.org/…age.php.html#557
takze zkus zavolat ->toString(Nette\Image::PNG);
- MW
- Člen | 626
Tak zkousim ulozit:
if($values->obr_hodnost->isImage()) {
$img = Nette\Image::fromFile($values->obr_hodnost);
$img->resize(60, null);
$img->save('test.png');
$values->obr_hodnost = (string) $img;
}
ale
Cannot set HTTP code after HTTP headers have been sent (output started at /domains1/microreg_cz/public/www_root/libs/Nette/common/Image.php:480
Mimochodem, co delam blbe? Uklada se jinak?
ALE
Nice catch to byl ;)
if($values->obr_hodnost->isImage()) {
$img = Nette\Image::fromFile($values->obr_hodnost);
$img->resize(60, null);
$values->obr_hodnost = $img->toString(Nette\Image::PNG);
}
jen ze vseho delam PNG.. ale to ani není nic proti nicemu.. pokud tomu tedy nebudu delat nejakou logiku :-)
Diky !
- David Matějka
- Moderator | 6445
vubec by nebylo spatny, kdyby trida Nette\Images mela metodu getOriginalFormat, co? :)
- enumag
- Člen | 2118
Nápad to není špatný, ale má to háček. Typ obrázku nelze zjistit z resource takže by se musel přidat druhý parametr konstruktoru. Druhá věc je že když už by ta metoda existovala tak by bylo fajn aby ten původní typ používaly metody save a toString jako výchozí a to už by byl solidní BC break. (I tak jsem pro.)
Editoval enumag (4. 9. 2013 9:26)
- MW
- Člen | 626
je tam
switch ($type) {
case self::JPEG:
$quality = $quality === NULL ? 85 : max(0, min(100, (int) $quality));
return imagejpeg($this->getImageResource(), $file, $quality);
case self::PNG:
$quality = $quality === NULL ? 9 : max(0, min(9, (int) $quality));
return imagepng($this->getImageResource(), $file, $quality);
case self::GIF:
return $file === NULL ? imagegif($this->getImageResource()) : imagegif($this->getImageResource(), $file); // PHP bug #44591
default:
throw new InvalidArgumentException("Unsupported image type.");
}
}
konkrétně
480: return imagepng($this->getImageResource(), $file, $quality);