Professional Documents
Culture Documents
تعلم برمجة جزء10
تعلم برمجة جزء10
لنشاء مقبض لصور ة جاهز ة دون الحاجة الى وجودimagecreatefromstring تستخدم الدالة
ملف لها حيث يمكن ان تكون بيانات الصور ة مخزنة اضمن قاعد ة بيانات او باستخدام دالة
: مثالbase64_encode
<?php
$base_64_data =
'/9j/4AAQSkZJRgABAQEASABIAAD/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc
1p9tZ+
+u7Kfr6zI4f/zyNT/16yv+v/9////////wfD/////////////2wBDATU4OEtCS5NRU
ZP/zq/O///////////////////////////////////////////////////////////
/////////wAARCAAwADEDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAMEA
gUB/8QAJxAAAgIBAwMDBQEAAAAAAAAAAAECAxEEEjEhQVETMmEFIkJxgZH/xAAYAQE
BAQEBAAAAAAAAAAAAAAADAgABBP/EABwRAAMBAAMBAQAAAAAAAAAAAAABAhESITEDQ
f/aAAwDAQACEQMRAD8A6gALnLLwjjeHUtCVqTwurMO/H4mJrdNbfcjx124z9r+CNp+
FpT+k71Nm7duf6OlB7oJ+UQOKb6xw/kr09m+OHyjTXeHbXWoaAAIES6qbU1HtgXVJ5
b7FdlUbPcsiNuyThxjgG0/RZpZg6mOI57tjCb11T7uAetqS6Zz4ElrCeLfhnW4goyX
L6C9HY3fjyhN97unl9EuEN+nwbtc+yWCcTeiueMdnQAAEPOAu2vevDXDGAb0xzNTXY
p9U2vKEfx/4dlxT5PPTj4J4jT9WlhHTXBVrMU2+clOnjGMGorCyZnQ3JuMmsja4KEM
EzLT7IqtRoAAQg//Z';
$image = imagecreatefromstring(base64_decode($base_64_data));
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
وقد تكون هذه الدالة ُمفيد ة عندما ل نعلم ما هو نوع الصور ة الُمراد إنشاء مقبض لها :
<?php
//This can be image.png image.gif or any supported image format
;))'$image = imagecreatefromstring(file_get_contents('image.jpg
>?
دالة : imagecolorallocaltealpha
تـ عمل هذه الدالة كما تعمل الدالة السابقة باستثناء وجود وسيط جديد هو قيمة الشفافية alpha
الذي تتراوح قيمته بين 127- 0
دالة : imagecolorat
تسـتخدم هـذه الـدالة لرجـاع لـون بكسل محدد باحداثياته من صور ة ُمحدد ة بمقبضها ,ويكون
شكلها العام كالتالي :
التعامل مع الصور: الفصل الثاني عشر 172
<?php
$image = imagecreatefromjpeg('image.jpg');
<?php
$image = imagecreatefromjpeg('image.jpg');
$color1 = imagecolorat($image, 10, 10);
$colors1 = imagecolorsforindex($image, $color1);
173 التعامل مع الصور: الفصل الثاني عشر
//print_r($colors1) outputs :
//Array ( [red] => 255 [green] => 255 [blue] => 255 [alpha] => 0 )
imagecolorsforindex($image, $rgb);
imagedestroy($image);
<?php
$image = imagecreatefromjpeg('image.jpg');
$x = imagesx($image);
$y = imagesy($image);
التعامل مع الصور: الفصل الثاني عشر 174
: imagefill الدالة
: تقوم هذه الدالة بتلوين منطقة محدد ة بلون واحد اي كما تقوم ادا ة التعبئة في برامج الرسم
<?php
$image = imagecreatetruecolor(200, 200);
$bg_color = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $bg_color);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
: شكلها العام هو, حيث تقبل اربعة وسائط
تقوم بتدوير الصور ة حول مركزهاimagerotate دالة باسمGD يوجد في مكتبة: تدوير الصورة
: شكلها العام,
حيث الزاوية بالدرجات و $bg_colorهو اللون الذي سيتم واضعه مكان الفراغ نتيجة التدوير .
مثال :
<?php
;)$image = imagecreatetruecolor(200, 200
;)imagefill($image, 0, 0, 0xffffff
;)$color = imagecolorallocate($image, 0, 255, 0
;)imagefilledrectangle($image, 50, 50, 149, 149, $color
;)$image = imagerotate($image, 45, 0xffffff
;)'header('Content-Type: image/png
;)imagepng($image
;)imagedestroy($image
>?
لحظ كيف ازدادت ابعاد الصور ة تلقائيا ً .
الدالة : imagesetpixel
مفعول هذه الدالة مثل اسمها حيث تقوم بتحديد لون بكسل معين باحداثياته $x, $yتبدو هذه
الدالة بل فائد ة لكن في الحقيقة هي من اهم الدوال في مكتبة GDحـيث تسـتخدم فـي كـثير من
التطبيقات المتقدمة على الصور كما سنرى لحقًا في سياق هذا الفصل :
<?php
التعامل مع الصور: الفصل الثاني عشر 176
imagesetthickness($image, $thickness);
: عدل المثال السابق كي يصبح كالتالي
<?php
$image = imagecreatetruecolor(200, 200);
$bg_color = imagecolorallocate($image, 0, 255, 0);
imagefill($image, 0, 0, $bg_color);
$color = imagecolorallocatealpha($image, 255, 0, 0, 75);
imagesetthickness($image, 5);
imageline($image, 0, 100, 199, 100, $color);
imageline($image, 0, 0, 199, 199, $color);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>
177 الفصل الثاني عشر :التعامل مع الصور
<?php
;)$image = imagecreatetruecolor(250, 100
;)$bg_color = imagecolorallocate($image, 255, 255, 255
;)imagefill($image, 0, 0, $bg_color
;)$color = imagecolorallocatealpha($image, 0, 0, 0, 75
)for($i = 1 ;$i <= 5; $i++
{
imagestring($image, $i, 20, 15 *$i, 'PHP:hypertext processor',
;)$color
}
;)'header('Content-Type: image/png
;)imagepng($image
;)imagedestroy($image
>?
وسكون لديك نتيجة شبيهة بالصور ة التالية :
الفصل الثاني عشر :التعامل مع الصور 178
دالة : imagettftext
تقوم هذه الدالة بطباعة نص باستخدام خطوط ttfبأي مقاس خط وبأي زاوية ,الشكل العام هو :
<?php
;)$image = imagecreatetruecolor(200, 200
;)$bg_color = imagecolorallocate($image, 255, 255, 255
;)imagefill($image, 0, 0, $bg_color
;)$color = imagecolorallocatealpha($image, 0, 0, 0, 75
imagettftext($image, 25, 0, 25, 110, $color, 'font.ttf',
;)''PHP:hypertext processor
;)'header('Content-Type: image/png
;)imagepng($image
;)imagedestroy($image
>?
دالة : imagettfbboxتقوم هذه الدالة باعاد ة مصفوفة تحوي احداثيات نص باستخدام خط
معين :
<?php
$font_spc = imagettfbbox(25, 0, 'font.ttf', 'PHP:hypertext
;)'processor
;)print_r($font_spc
]//Array ( [0] => -1 [1] => -1 [2] => 155 [3] => -1 [4] => 155 [5
) => -25 [6] => -1 [7] => -25
>?
لحظ ان هذه الدالة تعيد مصفوفة مكونة من ثمانية عناصر كالتالي :
تفيد هذه الدالة بحساب ابعاد اي نص مكتوب باي خط لستخدامها في محاذا ة النص )توسيط
مثل(
تختلف النتائج في المثال السابق باستخدام خطوط مختلفة .
الفصل الثاني عشر :التعامل مع الصور 180
دالة : imagecopy
دالة : imagecopyresizedتقوم هذه الدالة بنسخ جزء من صور ة ولصقه في صور ة اخرى مع
تغيير ابعاده :
تأتي الدالة imagefilterحاملة ً العديد من التأثيرات أو ما ُيسمى "الفلتر" التي ُيمـكن تطبيقــها
على الصور برمجيا ً ,وتأخذ هذه الدالة عدد متغير من الوسائط بحسب التأثير الُممرر إليها ,و لكن
كما هو ُمعتاد يـكون الـوسـيط الول هو مقـبـض الصـور ة والثاني هو الثابت الخاص بالفلتر
الُمستخدم و باقي الوسائط هي وسائط تختلف حسب التأثير الُمستخدم .شكل الدالة العام :