Mikähän tässä on vikana, kun pienentää tuota ympyrää. Jos tuosta poistaa pari lohkoa while-silmukasta, se tulostaa oikean kokoisena (100px).
<?php $file = "grafik12.jpg"; $width = 200; $height = 200; $x1=100; $y1=100; $image = ImageCreate($width, $height); $arr1=array(); $lohkot = array_pad($arr1, 101, 1); // luodaan arrayhyn 100 arvoa $i =1; while($lohkot[$i]) { $color = ImageColorAllocate($image,255,255,230); // Taustaväri ImageArc($image, $x1,$y1,0,0,0,360,$color); // // Tehdään ympyrälohkot $color = ImageColorAllocate($image,0,0,200); ImageArc($image,$x1,$y1,$i,$i,270,360,$color); // oikea yla $color = ImageColorAllocate($image,190,40,20); ImageArc($image,$x1,$y1,$i,$i,0,90,$color); // oikea ala $color = ImageColorAllocate($image,190,240,220); ImageArc($image,$x1,$y1,$i,$i,90,180,$color); // vasen ala $color = ImageColorAllocate($image,255,255,255); ImageArc($image,$x1,$y1,$i,$i,180,270,$color); // vasen yla $i++; } ImageJpeg($image, $file); ImageDestroy($image); echo "<img src=\"grafik12.jpg\">"; ?>
Aika jännä ympyrä. Ei ole nuo GD funktiot kovin tuttuja mutta tähän piti oikein syventyä.
Mitä ihmettä tuolla lohkotaulukolla teet? Muuta kuin käytät omituisena while-rakenteen ehtona? Sama homma kävisi
while($i<101)
Kikkailin tuolla hieman, eikä oikein selvinnyt että mikä tuota ympyrän kokoa rajoittaa. Vaikka laittaisi while($i<1000) niin ympyrästä tulee saman kokoinen. Paitsi jos $i:tä lisää esimerkiksi kahdella tai kolmella. Loppuuko piirtotehon muisti tms? Osaisiko joku selventää?
<?php $file = "grafik12.jpg"; $width = 200; $height = 200; $x1 = $width / 2; $y1 = $height / 2; $image = ImageCreate($width, $height); $c1 = ImageColorAllocate($image,255,0,0); $c2 = ImageColorAllocate($image,0,255,0); $c3 = ImageColorAllocate($image,0,0,255); $c4 = ImageColorAllocate($image,0,0,0); for ($i = 1; $i <= $width; $i++) { // Tehdään ympyrälohkot ImageArc($image, $x1, $y1, $i, $i, 270, 360, $c1); ImageArc($image, $x1, $y1, $i, $i, 0, 90, $c2); ImageArc($image, $x1, $y1, $i, $i, 90, 180, $c3); ImageArc($image, $x1, $y1, $i, $i, 180, 270, $c4); } ImageJpeg($image, $file); ImageDestroy($image); echo "<img src=\"$file\" alt=\"Pallero\" />"; ?>
Siinä teille. Ainakin toimii nopeammin, kun ottaa värin luomisen pois silmukasta, ja mahtaako siinä olla vielä jokin muistivuotokin, tiedä häntä... Siinä vaiheessa alkoi kuitenkin toimia. Ja $i on koko ellipsin leveys, ei pelkästään näkyvän kaaren. Hieman alkaa ulko-osissa mennä räikäiseksi tuokin ympyrä, joten pitää varmaan pienemmillä väleillä $i:tä nostaa.
Kaiken kukkuraksi koodin voi sisentää ymmärrettävästikin.
Kiitos!.
Pikkuisen muutin tuota:
for ($i = 1; $i <= $x1; $i++)
niin tulee kooksi tuo 100.
Tuosta suuremmasta koosta, miten voi "nostaa $i:tä pienemmillä väleillä"? Eikö se tuossa jo pitäisi olla 1px, vai suureeneeko tuo $i:n mukana?
Metabolix ilmeisesti tarkoitti, ettei ympyrän keskellä tarvitse yhden pikselin piirtotarkkuutta. Voit esimerkiksi kokeilla kasvattaa $i:tä kahdella kunnes $i on esim 20 (silmukat voit rakennella itse)
siirsin tämän...
Aihe on jo aika vanha, joten et voi enää vastata siihen.