Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: GD hukassa

Sivun loppuun

SysRq868 [18.03.2007 10:37:47]

#

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.

Antti Laaksonen [18.03.2007 11:28:38]

#

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.

Pöytälamppu [18.03.2007 11:42:34]

#

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;
  }
?>

SysRq868 [18.03.2007 11:47:52]

#

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!

Antti Laaksonen [18.03.2007 11:49:12]

#

Tavallinen tapa on juuri funktio imagecreatefromX. Kuvia voi toki ladata muistiin useampia, ja niitä ei ole mikään pakko näyttää sivulla.

SysRq868 [18.03.2007 11:57:06]

#

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.

Antti Laaksonen [18.03.2007 12:08:15]

#

Mikä on muuttuja $image, josta yritetään hakea leveyttä ja korkeutta? Virheilmoitukset saa näkyviin kommentoimalla header-rivin.

SysRq868 [18.03.2007 12:19:27]

#

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.jpg

Kiitos vielä kerran, että jaksatte minua.

SysRq868 [19.03.2007 08:25:20]

#

Niin, auttaisiko kukaan? :)

Olga [19.03.2007 18:32:59]

#

Kokeiles tuon imagecreaten sijaan imagecreatetruecolor-funktiota.

SysRq868 [19.03.2007 20:12:27]

#

Kiitän mitä syvimmin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta