Koetin katsoa PHP:n oppaasta, luin kyllä oppaan ja kyllä, googletin myös.
Mutta kaksi asiaa on GD-kuvien luomisesta PHP:lla vähän hukassa. Jos joku guru auttaisi, olisi erittäin kiva.
1. Voiko ja miten voisi GD-kuvaan lisätä kaksi kuvaa joistain kansioista? Eri asiahan olisi vain yksi, silloinhan yksinkertainen imagecreatefromX() auttaisi.
2. Voiko ja miten voisi flipata kuvan pysty- tai vaakasuunnassa? Siis peilikuvaksi, ei pyörittää.
Kiitos kaunis.
1. Kun kuvat on ensin ladattu muistiin tavalliseen tapaan, niitä voi kopioida ympäriinsä funktiolla imagecopy. Tällä funktiolla voi kopioida sekä kuvien osia että kokonaisia kuvia toisiinsa.
2. Jos valmista funktiota ei ole, pikseleitä voi aina kopioida yksi kerrallaan oikeisiin paikkoihin (imagecolorat ja imagesetpixel). Tässä tapauksessa pysty- ja vaakarivejä voi kopioida myös yhden pikselin kokoisina siivuina funktiolla imagecopy.
Tuolta löytyi flippaus https://www.php.net/gd (3. tulos googlella hakusanoilla php image flip)
<?php function flipImage($image, $vertical, $horizontal) { $w = imagesx($image); $h = imagesy($image); if (!$vertical && !$horizontal) return $image; $flipped = imagecreatetruecolor($w, $h); if ($vertical) { for ($y=0; $y<$h; $y++) { imagecopy($flipped, $image, 0, $y, 0, $h - $y - 1, $w, 1); } } if ($horizontal) { if ($vertical) { $image = $flipped; $flipped = imagecreatetruecolor($w, $h); } for ($x=0; $x<$w; $x++) { imagecopy($flipped, $image, $x, 0, $w - $x - 1, 0, 1, $h); } } return $flipped; } ?>
Kiitos molemmille!
Öhh.. olen tosin hieman uusi tämän GD:n kanssa. Mikä on se "tavallinen tapa" ladata kuva? Se OP:n opas vain piirteli ja kirjoitteli. Eli mitä teen ladatakseni kuvan?
Kiitos vielä kerran!
Tavallinen tapa on juuri funktio imagecreatefromX. Kuvia voi toki ladata muistiin useampia, ja niitä ei ole mikään pakko näyttää sivulla.
Onnistuin kokkaamaan moisen:
<?php header("Content-type: image/png"); $ppic = imagecreate(120,252); $w = imagesx($image); $h = imagesy($image); $imgname = "img/".$_GET["id"]."_small.jpg"; $im1 = @imagecreatefromjpeg($imgname); imagecopy($ppic, $im1, 0, 0, 0, 0, $w, $h); imagepng($ppic); imagedestroy($ppic); ?>
Mutta argh, kuva sisältää virheitä. Onhan se tietenkin väärin, mutta miten? imagecopy():sta kun ei ole niin laajaa dokumentaatiota. Kiitos.
Mikä on muuttuja $image, josta yritetään hakea leveyttä ja korkeutta? Virheilmoitukset saa näkyviin kommentoimalla header-rivin.
Ei näin. Huoh.... Kiitos.
Nyt kuva näkyy, mutta siihen tulee suhteellisen oudot värit. Sen lisäksi, onko mitään mahdollisuutta saada png-lähdekuvien läpinäkyvyyttä toimimaan?
Oudot värit à la: http://denvish.net/ulf/180307/44320_weird.png
Kun pitäisi olla: http://denvish.net/ulf/180307/44346_11111_small.
Kiitos vielä kerran, että jaksatte minua.
Niin, auttaisiko kukaan? :)
Kokeiles tuon imagecreaten sijaan imagecreatetruecolor-funktiota.
Kiitän mitä syvimmin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.