Průhlednost obrázku po IMAGE::resize()

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

Vím že to už tu bylo několikrát, ale ani jedno z řešení mi nepřineslo úspěch…

Vytvářím thumb nahrávaného obrázku, ale po IMAGE::resize() se mi uloží průhledný obrázek s černým pozadím.
Zkoušel jsem toho už mraky a jsem v koncích… můžete mi někdo poradit ? :)

public function makeThumb($name){
       //$image = new MImage( imagecreatefromstring(file_get_contents('../www/images/gallery/'.$name)));
       $image = Image::fromFile('../www/images/gallery/'.$name);
       $image->savealpha(TRUE);

		if($image->height < $image->width){
           $image->resize(150, NULL, 100, Image::PNG);
       }
       else{
           $image->resize(NULL, 150, 100, Image::PNG);    //Zmensovani obrazku se zachovanim pomeru stran
       }

       $image->save('../www/images/gallery/thumbs/'.$name);
   }
motorcb
Člen | 551
+
0
-

@Teapack666:

$photo->alphaBlending(true);
$photo->resize( 1000, 1000, Nette\Utils\Image::SHRINK_ONLY );
$photo->alphaBlending(false);
$photo->saveAlpha(true);
$photo->save( ... );
Teapack666
Člen | 9
+
0
-

@motorcb

Toto už jsem taky zkoušel a pořád po uložení černý pozadí…

Teapack666
Člen | 9
+
0
-

Nikdo netuší ?

David Grudl
Nette Core | 8129
+
+2
-

saveAlpha ani alphaBlending nastavovat není potřeba, ale máš nějaké divné parametery v resize(), mrkni do dokumentace.

Nevím, do jakého formátu to ukládáš, ale poloprůhlednost podporuje pouze truecolor PNG.

cendak
Člen | 21
+
0
-

Já osobně to dělám takto a funguje mi to:

$photo->alphaBlending(true);
$photo->resize(100, 100, Image::SHRINK_ONLY);
$photo->alphaBlending(false);
$photo->saveAlpha(true);
$photo->save( $file, $quality, Image::PNG );     // $quality 0..9
David Grudl
Nette Core | 8129
+
0
-

Mužeš to klidně dělat bez těch saveAlpha ani alphaBlending :-)

hlupec
Backer | 8
+
0
-

Ahoj, vyresili jste to nejak? Mam stejny problem, ale az od te chvile, kdy jsem zacla pouzivat nette 2.4. Respektive take PHP 7.0 – takze nemuzu uplne presne urcit, ktery z tech upgradu to provedl.

Zkousela jsem to s dvema ruznyma PNGckama, obe dopadly stejne (cerne pozadi). S obrazkem provadim toto:

Image::fromFile($filepath)->resize($width, $height, Image::EXACT)->save($preview);

Jo, tak ted jsem si to jste zkusila na PHP 7 ale s nejakou archaickou verzi Nette (2.0.6) a tam to funguje spravne.