Merhaba arkadaşlar
php ödevimiz gereği php grafik çizmemiz gerekli.
şimdi şöyle bi durum var. biz ilçeleri nufusa göre sıraladık. height=deger değer kısmını veritabanında çektik ve aşağıdaki noktalar gibi sıralandı.
şimdi noktalar arasına paintte çizgiler çektim. ben o çizgileri çekmek istiyorum. yani height değeri 60 dan 80 e yükseldiğinde cizgi 60 dan 80 ne gelicek. Yardım edecek arkadaşları bekliyoruz.
ana resim
http://f1303.hizliresim.com/17/z/lnp4j.png
hedeflediğim resim
http://f1303.hizliresim.com/17/z/lnp6m.png
Php Grafik
9
●1.324
- 01-04-2013, 01:48:14Noktaların koordinatları belli ise, imageline kullanmayı denediniz mi? Birinci noktanin x ve y koordinatları, ikinci noktanın x ve y koordinatları, renk, resim..
imageline($resim, $x1, $y1, $x2, $y2, $renk)
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 01:48:14 -->-> Daha önceki mesaj 01:23:53 --
Örnek olsun diye bir tane yaptım;
<?php $img = imagecreatetruecolor(500, 500); $white = imagecolorallocate($img, 255, 255, 255); $red = imagecolorallocate($img, 255, 0, 0); imagefill($img, 0, 0, $white); $y = array(100,124,150,20,60,90,10,30,100); $x = 50; for($i=0, $j=1;$i<=7, $j<=8;$i++,$j++) { imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE); imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red); } imagefilledarc($img, 450, 100, 15, 15, 0, 0, $red, IMG_ARC_PIE); header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>Resim ebatlarını ve noktaların yerlerini rastgele girmiştim.
Aşağıdaki çıktıyı alırsınız:
- 01-04-2013, 18:42:50öncelikle teşekkürler ayrıca +rep i de ilk defa güzel birşey için kullandım.bayGaReZ adlı üyeden alıntı: mesajı görüntüle
şimdi hedeflediğim php dosyası bu. fakat şöyle bir sıkıntı var ben bu kadar php bilgisine sahip olmadığım için kodların çoğu yabancı. Biz başlangıç seviyesindeyiz. Veri çekme kısmını yeni atladık yani.
Bunu aşağıdaki örneğe nasıl uygularız onu merak ediyorum.
ilce tablomuz var. burada ilçelerimizin nufusları var. ben bunu oraya nasıl uygularım onu merak ediyorum. Dizi olarak çeksem bunlar fayda eder mi ?
Cevaplamasınız bile teşekkürler bunu araştırmaya devam edicem en azından bir parametre daha öğrendik sayenizde
- 01-04-2013, 23:06:16tablo bu isterseniz tabloyuda sql olarak da verebilirim.bayGaReZ adlı üyeden alıntı: mesajı görüntüle
http://b1304.hizliresim.com/18/1/lpt2x.png
tabloda s-id önemsiz.
yukarıdaki nokta resmi vardı onu bu aşağıdaki kod ile yaptım.
<table border=0 width=100% height=50 cellpadding=7 bordercolor=blue cellspacing=20> <tr> <?php mysql_connect("","root",""); mysql_select_db("tc"); $ilce=mysql_query("select * from ilce"); while($liste=mysql_fetch_array($ilce)) echo "<td valign=bottom align=center> <table> <tr> <td height=$liste[nufus] width=80><img src='nokta.png'></td></tr></table></td>"; ?> </tr> </table> - 02-04-2013, 00:02:21@fasb;
Tablonun aynısını oluşturdum. Yeni kodlar ve ekran görüntüsü aşağıda.
<?php mysql_connect('localhost','pma','pmapass'); mysql_select_db('test'); $sorgu = mysql_query("SELECT nufus FROM ilce"); $y = array(); while($sonuc = mysql_fetch_array($sorgu)){ $y[] = ($sonuc['nufus']/5)+100; } $img = imagecreatetruecolor(600, 300); $green = imagecolorallocate($img, 110, 255, 0); $red = imagecolorallocate($img, 255, 0, 0); imagefill($img, 0, 0, $green); $x = 50; for($i=0, $j=1;$i<=8, $j<=9;$i++,$j++) { imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE); imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red); } imagefilledarc($img, $x*(count($y)), $y[count($y)-1], 15, 15, 0, 0, $red, IMG_ARC_PIE); header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
Şimdi kodları satır satır açıklayayım.
mysql_connect('localhost','pma','pmapass'); mysql_select_db('test'); $sorgu = mysql_query("SELECT nufus FROM ilce"); $y = array(); while($sonuc = mysql_fetch_array($sorgu)){ $y[] = ($sonuc['nufus']/5)+100; }Yukarıda yazdığım bu satırlarda veritabanına bağlandım. ilce tablosunun nufus sütununu çektim ve $y isminde bir değişkene atadım. Rakamları direk koordinat olarak kullandığım için 100, 600 gibi büyük rakamlar yerine bu rakamların beşte birini aldım. ve grafiğimiz tavana yapışmasın diye her değere +100 ekledim ki tavandan yüz piksel aşağı ötelesin. Sonuç olarak rakamlar kümesi $y değişkenine gelmiş oldu.
$img = imagecreatetruecolor(600, 300); $green = imagecolorallocate($img, 110, 255, 0); $red = imagecolorallocate($img, 255, 0, 0); imagefill($img, 0, 0, $green); $x = 50;
Bu satırlarda ise $img değişkenine, imagecreatetruecolor fonksiyonu ile oluşturduğum resmi atadım. 600px genişliğinde 300px yüksekliğinde bir resim oluşturdum. Daha sonra $green değişkenine imagecolorallocate ile $img değişkeninde oluşturdum resmi yeşile boyadığımı söyledim. $red isimli değişkene ise kırmızı rengini attım. imagefill ile de resmi yeşile boyadım. Daha sonra soldan 50px ile başlayalım diye $x değişkeni oluşturup 50px atadım..
Gelelim for döngüsüne
for($i=0, $j=1;$i<=8, $j<=9;$i++,$j++) { imagefilledarc($img, $x*$j, $y[$i], 15, 15, 0, 0, $red, IMG_ARC_PIE); imageline($img, $x*$j, $y[$i], $x*($j+1), $y[$i+1], $red); } imagefilledarc($img, $x*(count($y)), $y[count($y)-1], 15, 15, 0, 0, $red, IMG_ARC_PIE);Döngüde $i ve $j isimli iki değişken var, imagefilledarc ile noktaları, imageline ile çizgileri oluşturdum. Döngüden sonra kullandığım imagefiledarc ise en sondaki noktayı oluşturmak içindi.
Son olarak
header("Content-type: image/png"); imagepng($img); imagedestroy($img);kodları ile ise, sayfanın bir img/png türünde png resmi olduğunu belirten başlığı header fonksiyonu ile gönderdim. imagepng fonksiyonu ile $img değişkenindeki veriler ile resmi oluşturdum. Ekrana resmi bastıktan sonra imagedestroy ile bellekten resmi sildim.
Varsa aklınıza takılan soru, sorabilirsiniz. - 02-04-2013, 00:17:15http://d1304.hizliresim.com/18/2/lpvh9.png
şimdi ben tek tek anlayarak deftere not alıcam. fakat denediğimde resmi oluşturmadı. biraz sonra okumaya başlıcam fakat hazır siz gitmeden bunu da soram dedim okuduktan sonrada yapamazsam diye.
Ayrıca ücretsiz olarak destek verdiğiniz için teşekkürler. - 02-04-2013, 00:32:11Önemli değil hocam, biz de buralardan öğrendik vaktinde, boynumuzun borcu bilgimizi paylaşmak.
Kullandığınız kodları görmeden birşey söyleyemem ama kodlarda herhangi bir hata yaparsanız yukarıdaki çıktıyı alırsınız. header('Content-Type:image/png') yazan satırı kaldırın, böylece bir hata varsa hata mesajını görürsünüz. Hata mesajını ve kullandığınız kodları paylaşın bi bakayım. - 02-04-2013, 00:47:47çalıştırdım hocam. şimdi deftere tek tek neler olduğunu yazıyorum. teşekkür ediyorum tekrardan.bayGaReZ adlı üyeden alıntı: mesajı görüntüle
hatayı açıklıyım veritabanı adı, giriş bilgilerini değiştirdim onlar aynı zannettim olay çözüldü teşekkürler.
