---NewLand---
[ En son gönderilenler · Üyeler · Forum kuralları · Ara · RSS ]
  • Page 1 of 1
  • 1
Forum » Programcılık » PHP » Php ıle Grafik örneği
Php ıle Grafik örneği
robot-uyeTarih: Saturday, 2007-10-20, 10:39 AM | Mesaj # 1
Colonel
Vazifesi: Moderator
Mesajlar: 248
Karizma: 3
Status: Çevrim dışı
Bircok konuda oldugu gibi PHP, Web uygulamalari ve diger tüm bilgisayar ve teknoloji alanlarinda
"Türkce Kaynak" sorunumuzun oldugu acik bir gercek. Türkce kitaplarda ve internet sitelerinde
genelde cok az bir yer verilen "PHP ve Grafik Uygulamalari" konusunda bir seyler yapmak isteyen
arkadaslara biraz olsun yardimci olabilmek icin 2 basit örnek hazirladim.

Örnekler belki profesyonel siteler yada sirketler icin ideal olmayabilir ama orta düzey bir web
sitesinde verileri grafige dökmek icin kullanilabilir diye düsünüyorum.

Burada 2 adet örnek var biri "haftalik.php" ve digeri "aylik.php" isimlerinden de anlasilacagi
üzere haftalik ve aylik olarak elimizdeki verileri "SUTUN" grafige döküyor. Her ikisi de tek
baslarina ya da HTML icinden cagirilabilir, HTML icinden cagirmak isterseniz

Kod:
1. <img
2. src="haftalik.php">

ya da

1. <img src="aylik.php">

gibi bir ifade kullanabilirsiniz.

Ayrıca; bu sekilde img olarak cagiracaksaniz, kaynakta biraz degisiklik yapip grafik dosyasini
cagirirken

Kod:
<img src="aylik.php=?w=400&h=300&grid=5">

gibi bir ifade kullanabilirsiniz,
böyle daha esnek olur sanirim.

Kodlar az bucuk farkli kaynaklardan aldigim fikir disinda tamamen bana ait, fazla ugrasmadim yani
optimize edilmesi gerekebilir. Örneklerin kaynak kodlarini aynen veriyorum, isteyen istedigi
degisikligi yapip (sag taraftaki imza bölümünü v.s. degistirip istedigi sitede kullanabilir.

Örnek Kod

Kod:
1.
2. <?php
3. /*-------------------------------
4. // PHP ILE AYLIK SUTUN GRAFIK CIZIM ORNEGI
5. // aylik.php
6. //
7. // M. Yilmaz SUSLU, Subat 2003
8. // Yüzüncü Yil Universitesi, VAN
9. // yilmazsuslu@hotmail.com
10. --------------------------------------------*/
11. header ("Content-type: image/png");
12. //--- Genel Degiskenler -----------------------------
13. $w = 500; // Resmin Genisligi [400-500 arasi ideal]
14. $h = 250; // Resmin Yuksekligi [250-350 arasi ideal]
15. $Baslik = "2002 Yili Aylik Ziyaretci Istatistigi";
16. $BaslikFont = 3; // Basligin font buyuklugu [1-5 arasi, 3 ideal]
17. $GraphName = "TEKIL ZIYARET / AY";
18. $BoslukLeft = ($w-(($BaslikFont+3)*strlen("$Baslik")))/2; // Ortalama sol margin
19. $BoslukTop = ($h+(5*strlen("$GraphName")))/2; // Ortalama ust margin (GraphName)
20. $YatayGrid = 5; // yatay olarak cizilecek klavuz sayisi
21. $LeftM = ($w*(12/100))/2;
22. $TopM = ($h*(12/100))/2;
23. $SutunGen = $w*6/100;
24. //--- End of Genel Degiskenler --------------------------------
25.
26.
27.
28. //--- Grafige Dökülecek Veriler -------------------------------
29. /* Bu verileri ayri satirlarda verdim ama bir while döngüsüne girilip
30. veritabanindan ya da dosyadan da okutularak ya da $_GET ya da $_POST
31. degiskeni olarak bu degerler dinamik olarak verilebilir */
32. $Veri[0] = 125;
33. $Veri[1] = 570;
34. $Veri[2] = 870;
35. $Veri[3] = 918;
36. $Veri[4] = 759;
37. $Veri[5] = 298;
38. $Veri[6] = 890;
39. $Veri[7] = 987;
40. $Veri[8] = 1280;
41. $Veri[9] = 318;
42. $Veri[10] = 419;
43. $Veri[11] = 697;
44. $Aylar = array("Oca","Sub","Mar","Nis","May","Haz","Tem","Agu","Eyl","Eki","Kas", "Ara");
45. //--- End of Grafige Dökülecek Veriler ---------------------
46.
47.
48.
49. $VeriKova = array_values($Veri); // Veri dizisinin bire bir kopyasi
50. sort($VeriKova);
51. $Min = $VeriKova[0];
52. $Max = $VeriKova[11];
53. $Top = array_sum($Veri);
54. $Resim = imagecreate($w,$h);
55.
56.
57.
58. //--- Renk Tanimlamalari ----------------------------
59. $Siyah = imagecolorAllocate($Resim, 0, 0, 0);
60. $Beyaz = imagecolorallocate($Resim, 255, 255, 255);
61. $Mavi = imagecolorallocate($Resim, 100, 100, 255);
62. $Kirmizi = imagecolorAllocate($Resim, 255, 0, 0);
63. $Yesil = imagecolorAllocate($Resim, 0, 150, 0);
64. $Gri = imagecolorAllocate($Resim, 200, 200, 200);
65. //--- End of Renk Tanimlamalari -------------------------------
66.
67.
68.
69. imagefilledrectangle($Resim, 0, 0, $w, $h ,$Beyaz);
70. imagerectangle($Resim, 0, 0, $w-1, $h-1, $Siyah);
71.
72.
73.
74. //--- Gridleri Cizmeye Basliyoruz -----------------------------
75. $CAAM = ($h-($TopM*4))/$YatayGrid; // Cizgi Araligi Artis Miktari
76. $Cizgi[0] = $TopM*2; // En ustteki Grid icin top margin degeri
77. $MaxTemp = $Max; // Maximum degeri kova degiskene attik lazim olacak
78. if(strlen($MaxTemp)>=3):
79. $CizgiSayim = strrev(substr(strrev("$MaxTemp"), 0, 2));
80. $WhileGo = 100;
81. else:
82. $CizgiSayim = strrev(substr(strrev("$MaxTemp"), 0, 1));
83. $WhileGo = 10;
84. endif;
85. while(intval($CizgiSayim)<$WhileGo)
86. {
87. $CizgiSayim++;
88. $MaxTemp++;
89. }
90. $CizgiSayi[0] = $MaxTemp;
91. for($i=0; $i<=$YatayGrid; $i++)
92. {
93. if(empty($CizgiSayi[$i]))
94. {
95. $CizgiSayi[$i] = round($MaxTemp*(($YatayGrid-$i)/$YatayGrid));
96. $Cizgi[$i] = $Cizgi[$i-1]+$CAAM;
97. }
98. switch(strlen($CizgiSayi[$i]))
99. {
100. case "1" ; $spacer = " "; break;
101. case "2" ; $spacer = " "; break;
102. case "3" ; $spacer = " "; break;
103. case "4" ; $spacer = ""; break;
104. }
105. imageline($Resim,$LeftM*2,$Cizgi[$i], $w-$LeftM, $Cizgi[$i],$Gri);
106. imagestring($Resim, 2, $LeftM-($LeftM/4), $Cizgi[$i]-7, "$spacer$CizgiSayi[$i]", $siyah);
107. }
108. //--- End Of Gridleri Cizmeye Basliyoruz --------------------
109.
110.
111.
112. //--- Aylari ve SUTUNLARI cizmeye basliyoruz ---------------
113. $Sutun = ($w-(3*$LeftM))/12; // Sütunlarin cizilecegi alani 12 parcaya bol
114. $GrafikAlani = round($h-($TopM*4)); // Grafigin toplam yuksekligi
115. $Birim = $GrafikAlani/$MaxTemp; //Sütunlar icin 1 birimin px degeri
116. for($i=0; $i<12; $i++)
117. {
118. if($Veri[$i]==$Max) : $Renk = $Kirmizi;
119. elseif($Veri[$i]==$Min) : $Renk = $Yesil;
120. else : $Renk = $Mavi;
121. endif;
122. $x1 = 2.1*$LeftM+($Sutun*$i);
123. $y1 = ($TopM*2)+$GrafikAlani-($Birim*$Veri[$i]);
124. $x2 = $x1+$SutunGen;
125. $y2 = $h-$TopM*2;
126. switch(strlen($Veri[$i]))
127. {
128. case "1" : $xcarpan = 2.5; break;
129. case "2" : $xcarpan = 2.475; break;
130. case "3" : $xcarpan = 2.330; break;
131. case "4" : $xcarpan = 2.300; break;
132. }
133. imagefilledRectangle($Resim, $x1, $y1, $x2, $y2, $Renk);
134. imageRectangle($Resim, $x1, $y1, $x2, $y2, $Siyah);
135. imagestring($Resim,2,2.335*$LeftM+($Sutun*$i),$h-(2*$TopM),"$Aylar[$i]",$Siyah);
136. imagestring($Resim,1,$xcarpan*$LeftM+($Sutun*$i),$y1-9,"$Veri[$i]",$Siyah);
137. }
138. //--- End of Gunleri ve SUTUNLARI cizmeye basliyoruz ------------------
139.
140.
141.
142. //--- L seklinde 2 kenara siyah cizgi --------------------------
143. imageline($Resim,$LeftM*2,$h-$TopM*2,$w-$LeftM,$h-$TopM*2,$Siyah);
144. imageline($Resim,$LeftM*2,$TopM,$LeftM*2,$h-$TopM*2,$Siyah);
145. //--- End of L seklinde mavi cizgi -----------------------------
146.
147.
148.
149. imagestring($Resim,$BaslikFont,$BoslukLeft+1,(1/$BaslikFont)+3,"$Baslik",$Gri);
150. imagestring($Resim,$BaslikFont,$BoslukLeft,1/$BaslikFont+2,"$Baslik",$Kirmizi);
151. imagestring($Resim,1,$LeftM*2, $h-$TopM,"Max=$Max",$Kirmizi);
152. imagestring($Resim,1,$LeftM*4, $h-$TopM,"Min=$Min",$Yesil);
153. imagestring($Resim,1,$LeftM*6, $h-$TopM,"Toplam=$Top",$Mavi);
154. imagestringup($Resim,1,3,$BoslukTop,"$GraphName",$Kirmizi); // GraphName
155. $mysign= "M. YILMAZ SUSLU, Subat 2003, VAN";
156. imagestringup($Resim,1,$w-10,$h-(strlen($mysign)*0.2), $mysign,$Gri); // Imza...
157. imagepng($Resim);
158. imagedestroy($Resim);
159. ?>
160.
161.
162.
163. <?php
164. /*---------------------------------------------------
165. // PHP ILE SUTUN GRAFIK CIZIM ORNEGI
166. // haftalik.php
167. //
168. // M. Yilmaz SUSLU, Subat 2003
169. // Yüzüncü Yil Universitesi, VAN
170. // yilmazsuslu@hotmail.com
171. ---------------------------------------------------*/
172. header ("Content-type: image/png");
173. //--- Genel Degiskenler -------------------------------------
174. $w = 500; // Resmin Genisligi [400-500 arasi ideal]
175. $h = 250; // Resmin Yuksekligi [250-350 arasi ideal]
176. $Baslik = "Subat Ayi 3. Hafta Satislar";
177. $BaslikFont = 3; // Basligin font buyuklugu [1-5]
178. $GraphName = "ADET / GUN";
179. $BoslukLeft = ($w-(($BaslikFont+3)*strlen("$Baslik")))/2; // Ortalama sol margin
180. $BoslukTop = ($h+(5*strlen("$GraphName")))/2; // Ust margin (GraphName icin)
181. $YatayGrid = 10; // yatay olarak cizilecek klavuz sayisi
182. $LeftM = ($w*(12/100))/2;
183. $TopM = ($h*(12/100))/2;
184. $SutunGen = $w*8/100;
185. //--- End of Genel Degiskenler ----------------------------------
186.
187.
188.
189. //--- Grafige Dökülecek Veriler ---------------------------------
190. /* Bu verileri ayri satirlarda verdim ama bir while döngüsüne girilip
191. veritabanindan ya da dosyadan da okutularak ya da $_GET ya da $_POST
192. degiskeni olarak bu degerler dinamik olarak verilebilir */
193. $Veri[0] = 50;
194. $Veri[1] = 98;
195. $Veri[2] = 130;
196. $Veri[3] = 58;
197. $Veri[4] = 62;
198. $Veri[5] = 168;
199. $Veri[6] = 186;
200. $Gunler = array("Pzt", "Sal", "Car", "Per", "Cum", "Csi", "Paz");
201. //--- End of Grafige Dökülecek Veriler --------------------------
202.
203.
204.
205. $VeriKova = array_values($Veri); // Veri dizisinin bire bir kopyasi
206. sort($VeriKova);
207. $Min = $VeriKova[0];
208. $Max = $VeriKova[6];
209. $Top = array_sum($Veri);
210. $Resim = imagecreate($w,$h);
211.
212.
213.
214. //--- Renk Tanimlamalari ------------------------------------
215. $Siyah = imagecolorAllocate($Resim, 0, 0, 0);
216. $Beyaz = imagecolorallocate($Resim, 255, 255, 255);
217. $Mavi = imagecolorallocate($Resim, 100, 100, 255);
218. $Kirmizi = imagecolorAllocate($Resim, 255, 0, 0);
219. $Yesil = imagecolorAllocate($Resim, 0, 150, 0);
220. $Gri = imagecolorAllocate($Resim, 200, 200, 200);
221. //--- End of Renk Tanimlamalari ---------------------------------
222.
223.
224.
225. imagefilledrectangle($Resim, 0, 0, $w, $h ,$Beyaz);
226. imagerectangle($Resim, 0, 0, $w-1, $h-1, $Siyah);
227.
228.
229.
230. //--- Gridleri Cizmeye Basliyoruz -------------------------------
231. $CAAM = ($h-($TopM*4))/$YatayGrid; // Cizgi Araligi Artis Miktari
232. $Cizgi[0] = $TopM*2; // En ustteki Grid icin top margin degeri
233. $MaxTemp = $Max; // Maximum degeri kova degiskene attik lazim olacak
234. if(strlen($MaxTemp)>=3):
235. $CizgiSayim = strrev(substr(strrev("$MaxTemp"), 0, 2));
236. $WhileGo = 100;
237. else:
238. $CizgiSayim = strrev(substr(strrev("$MaxTemp"), 0, 1));
239. $WhileGo = 10;
240. endif;
241. while(intval($CizgiSayim)<$WhileGo)
242. {
243. $CizgiSayim++;
244. $MaxTemp++;
245. }
246. $CizgiSayi[0] = $MaxTemp;
247. for($i=0; $i<=$YatayGrid; $i++)
248. {
249. if(empty($CizgiSayi[$i]))
250. {
251. $CizgiSayi[$i] = round($MaxTemp*(($YatayGrid-$i)/$YatayGrid));
252. $Cizgi[$i] = $Cizgi[$i-1]+$CAAM;
253. }
254. switch(strlen($CizgiSayi[$i]))
255. {
256. case "1" ; $spacer = " "; break;
257. case "2" ; $spacer = " "; break;
258. case "3" ; $spacer = " "; break;
259. case "4" ; $spacer = ""; break;
260. }
261. imageline($Resim,$LeftM*2,$Cizgi[$i], $w-$LeftM, $Cizgi[$i],$Gri);
262. imagestring($Resim, 2, $LeftM-($LeftM/4), $Cizgi[$i]-7, "$spacer$CizgiSayi[$i]", $siyah);
263. }
264. //--- End Of Gridleri Cizmeye Basliyoruz -------------------------
265.
266.
267.
268. //--- Gunleri ve SUTUNLARI cizmeye basliyoruz ------------------------
269. $Sutun = ($w-(3*$LeftM))/7; // Sütunlarin cizilecegi alani 7 parcaya bol
270. $GrafikAlani = round($h-($TopM*4)); // Grafigin toplam yuksekligi
271. $Birim = $GrafikAlani/$MaxTemp; //Sütunlar icin 1 birimin px degeri
272. for($i=0; $i<7; $i++)
273. {
274. if($Veri[$i]==$Max) : $Renk = $Kirmizi;
275. elseif($Veri[$i]==$Min) : $Renk = $Yesil;
276. else : $Renk = $Mavi;
277. endif;
278. $x1 = 2.3*$LeftM+($Sutun*$i);
279. $y1 = ($TopM*2)+$GrafikAlani-($Birim*$Veri[$i]);
280. $x2 = $x1+$SutunGen;
281. $y2 = $h-$TopM*2;
282. switch(strlen($Veri[$i]))
283. {
284. case "1" : $xcarpan = 2.9; break;
285. case "2" : $xcarpan = 2.8; break;
286. case "3" : $xcarpan = 2.735; break;
287. case "4" : $xcarpan = 2.625; break;
288. }
289. imagefilledRectangle($Resim, $x1, $y1, $x2, $y2, $Renk);
290. imageRectangle($Resim, $x1, $y1, $x2, $y2, $Siyah);
291. imagestring($Resim,2,2.62*$LeftM+($Sutun*$i),$h-(2*$TopM),"$Gunler[$i]",$Siyah);
292. imagestring($Resim,1,$xcarpan*$LeftM+($Sutun*$i),$y1-9,"$Veri[$i]",$Siyah);
293. }
294. //--- End of Gunleri ve SUTUNLARI cizmeye basliyoruz -----------------
295.
296.
297.
298. //--- L seklinde 2 kenara mavi cizgi -----------------------------
299. imageline($Resim,$LeftM*2,$h-$TopM*2,$w-$LeftM,$h-$TopM*2,$Siyah);
300. imageline($Resim,$LeftM*2,$TopM,$LeftM*2,$h-$TopM*2,$Siyah);
301. //--- End of L seklinde mavi cizgi -------------------------------
302.
303.
304.
305. imagestring($Resim,$BaslikFont,$BoslukLeft+1,(1/$BaslikFont)+3,"$Baslik",$Gri);
306. imagestring($Resim,$BaslikFont,$BoslukLeft,1/$BaslikFont+2,"$Baslik",$Kirmizi);
307. imagestring($Resim,1,$LeftM*2, $h-$TopM,"Max=$Max",$Kirmizi);
308. imagestring($Resim,1,$LeftM*4, $h-$TopM,"Min=$Min",$Yesil);
309. imagestring($Resim,1,$LeftM*6, $h-$TopM,"Toplam=$Top",$Mavi);
310. imagestringup($Resim,1,4,$BoslukTop,"$GraphName",$Kirmizi); // GraphName
311. $mysign= "M. YILMAZ SUSLU, Subat 2003, VAN";
312. imagestringup($Resim,1,$w-10,$h-(strlen($mysign)*0.2), $mysign,$Gri); // Imza...
313. imagepng($Resim);
314. imagedestroy($Resim);
315. ?>


-----------------
----------------
----------------
-----------------
----------------
----------------
 
Forum » Programcılık » PHP » Php ıle Grafik örneği
  • Page 1 of 1
  • 1
Search:

Copyright Newland © 2024 Free web hostinguCoz