Špatně vykresléný PNG obrázek s průhledností
- gavec
- Člen | 68
Zdravím,
vím, že už se to tady něco podobného párkrát řešilo, ale nejsem z toho
moc chytrý. Snažím se uploadovat PNG obrázek s průhledností, ale
vykresluje se mi na černém pozadí. Není to watermark. Je to obyč
obrázek.
Pro upload používám tento kousek kódu:
$image = NImage::fromFile($_FILES['image']['tmp_name']);
$image->sharpen();
$image->save($path = $uploadfile);
chmod($uploadfile, 0777);
$image->resize(200, 200);
$image->sharpen();
$image->save($path = $uploadthumb);
chmod($uploadthumb, 0777);
U PNG to bohužel nejde. Nevěděl by někdo, jak se špatně vykresleného
png obrázku zbavit?
NETTE: 0.9.7b stable s prefixy
PHP: 5.3.3
Předem díky.
- loov
- Člen | 49
Zkus, čistě pro test, odstranit příkazy pro úpravu obrázku. Tedy
$image->resize(), $image->sharpen()
. Příjde mi divné, že
by samotné nahrávání, poškodilo obrázek. Dále bych se pak podíval,
jestli tvůj problém setrvává i v novější verzi nette. Protože 0.9.x je
skutečně už dinosauří build :-)
- gavec
- Člen | 68
Tak už to funguje. Kód jsem upravil takto:
$image = NImage::fromFile($_FILES['image']['tmp_name']);
$image->save($path = $uploadfile);
chmod($uploadfile, 0777);
$image->alphaBlending(true);
$image->resize(200, 200);
$image->alphaBlending(false);
$image->saveAlpha(true);
$image->save($path = $uploadthumb);
chmod($uploadthumb, 0777);
- gavec
- Člen | 68
Našel jsem to tady: https://forum.nette.org/…image-resize
Bylo však pořeba funkci resize obalit takhle:
$image->alphaBlending(true);
$image->resize(200, 200);
$image->alphaBlending(false);
$image->saveAlpha(true);
Jasir už to ale shrnul.