الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]بخصوص العلامة المائية ؟

بدأه نهو الحالي في 25 يناير 2012 · 18 رد · 1,325 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

اريد من شخص يجيد التعامل مع دوال الصور التعديل ملف العلا مة المائية

العلامة المائية هي صور صغيرة بمتداد png تطبع على الصور في مجلد ما نت الموقع متلا images

المشكلة ان الملف يقوم بطلع العلامة المائية على جميع الصور بنفس الحجم وانا ارفع الصور الى مجلد image بأحجام مختلفة يعني صور صغير وصور كبير

الصور الصغيرة ستغطها العلامة المائية وتتشوه

ياريت حل للمشكلة انا في اعتقادي انو الحل يكون بجعل الطبع يكون ب نسبة الموئية متلا لو افترضنا انو لدينا صور بحجم 100% سيكون الطبع علليها فقط بنسبة 15%

ياريت واجد عندو خبرة كافية يعدلنا على الملف مع ذكر التعليلات التى تمت

ودعوة له في ظهر الغيب

<?php
// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// Load the requested image
$image = imagecreatefromstring(file_get_contents($path));

$w = imagesx($image);
$h = imagesy($image);

// Load the watermark image
$watermark = imagecreatefrompng('watermark.png');
$ww = imagesx($watermark);
$wh = imagesy($watermark);

// Merge watermark upon the original image
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

// Spool the image in the original format
eregi('\.(gif|jpeg|jpg|png)$',$path,$regs);
switch( $regs[1] )
{
	case 'gif':
		header('Content-type: image/gif');
		imagegif($image);
		break;
	case 'jpg':
	case 'jpeg':
		header('Content-type: image/jpeg');
		imagejpeg($image);
		break;
	case 'png':
		header('Content-type: image/png');
		imagepng($image);
		break;
}
exit();
?>

تم تعديل هذه المشاركة بواسطة نهو الحالي في 25 يناير 2012 في 18:54

#2

وعليكم السلام

قم بتجربة هذا الكود:

<?php
$percentage = 0.15;

// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// Load the requested image
$image = imagecreatefromstring(file_get_contents($path));

$w = imagesx($image);
$h = imagesy($image);

// Load the watermark image
$watermark = imagecreatefrompng('watermark.png');
$ww = $w * $percentage;
$wh = $h * $percentage;

// Merge watermark upon the original image
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

// Spool the image in the original format
eregi('\.(gif|jpeg|jpg|png)$',$path,$regs);
switch( $regs[1] )
{
        case 'gif':
                header('Content-type: image/gif');
                imagegif($image);
                break;
        case 'jpg':
        case 'jpeg':
                header('Content-type: image/jpeg');
                imagejpeg($image);
                break;
        case 'png':
                header('Content-type: image/png');
                imagepng($image);
                break;
}
exit();
?>

لاحظ هذين السطرين:

$ww = $w * $percentage;
$wh = $h * $percentage;

هذان يأخذان القيمة من الصورة الأصلية ومن ثم يتم استخراج النسبة المئوية، يمكنك التعديل على متغير $percentage في بداية الكود لتعديل النسبة.

WebColorsLogo.png

#3

السلام عليكم

قمت بكتابة كلاس يعمل على تغيير حجم ملف watermark.png حسب الصورة المراد وضعها فيه

(تمت تجربته على ملفات jpg و png)، اما ملف watermark فيجب ان يكون من نوع png

يمكنك استعمالها كالتالي

<?php

include_once('watermark.php');

// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// the watermark class accepts 4 parameters
// the path to the image
// the path to the watermak png file
// the percentage the watermark will take on the image
// the space on the right and bottom
$wt = new Watermark($path, 'watermark.png', 20, 5);

// show the image
$wt->display();

exit();

watermark.zip

1
#4
khr2003 كتب:

وعليكم السلام

قم بتجربة هذا الكود:

<?php
$percentage = 0.15;

// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// Load the requested image
$image = imagecreatefromstring(file_get_contents($path));

$w = imagesx($image);
$h = imagesy($image);

// Load the watermark image
$watermark = imagecreatefrompng('watermark.png');
$ww = $w * $percentage;
$wh = $h * $percentage;

// Merge watermark upon the original image
imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

// Spool the image in the original format
eregi('\.(gif|jpeg|jpg|png)$',$path,$regs);
switch( $regs[1] )
{
        case 'gif':
                header('Content-type: image/gif');
                imagegif($image);
                break;
        case 'jpg':
        case 'jpeg':
                header('Content-type: image/jpeg');
                imagejpeg($image);
                break;
        case 'png':
                header('Content-type: image/png');
                imagepng($image);
                break;
}
exit();
?>

لاحظ هذين السطرين:

$ww = $w * $percentage;
$wh = $h * $percentage;

هذان يأخذان القيمة من الصورة الأصلية ومن ثم يتم استخراج النسبة المئوية، يمكنك التعديل على متغير $percentage في بداية الكود لتعديل النسبة.

اهلا اخي khr2003

الكود لا يعمل بشكل جيد حيت انه يظهر جزء صغير من العلامة المائية في الصور :S

اما الصور الصغيرة فلا يظهر في الاصل :wink:

عموما بارك الله فيك وفي ميزان حسناتك ان شاء الله

#5
choclatboy كتب:

السلام عليكم

قمت بكتابة كلاس يعمل على تغيير حجم ملف watermark.png حسب الصورة المراد وضعها فيه

(تمت تجربته على ملفات jpg و png)، اما ملف watermark فيجب ان يكون من نوع png

يمكنك استعمالها كالتالي

<?php

include_once('watermark.php');

// Path the the requested file
$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

// the watermark class accepts 4 parameters
// the path to the image
// the path to the watermak png file
// the percentage the watermark will take on the image
// the space on the right and bottom
$wt = new Watermark($path, 'watermark.png', 20, 5);

// show the image
$wt->display();

exit();

حياك الله اخي الكريم

عمل ممتاز 9/10 بقى مشكلة واحدة وهي انك جعلت الملف يجدد صورة واحدة وفي الاول كان يعمل طبع على جميع الصور التى هي في الملف

$path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

بينما انت جعلتها مع صورة واحدة

$wt = new Watermark('original.jpg', 'watermark.png', 20, 5);

جربت اني ضفت المتغير path$

[code]$wt = new Watermark('$path', 'watermark.png', 20, 5);

ولم يجدث شئ لصور ؟

كما هل يمكن تطبيق ما قام khr2003 وهو عمل متغير يتحكم في حجم ظهر العلامة المائية كــ تكبيريها او تصغيريها على الصور

وبارك الله فيك اخي الكريم اسئل الله ان يغفر ذنبك ويرحمك ويرحم والديك ويجازيك الفدروس يارب

#6

صحح

  $wt = new Watermark($path, 'watermark.png', 20, 5);

تم تعديل هذه المشاركة بواسطة choclatboy في 26 يناير 2012 في 16:48

1
#7
choclatboy كتب:

صحح

  $wt = new Watermark($path, 'watermark.png', 20, 5);

حاول تضمنه في نفس الملجد

تم تعديل هذه المشاركة بواسطة samy9o في 26 يناير 2012 في 19:04

1
#8

اهلا اخي

جربت الكود ولم يتم عرض العلامة المائية على الصور المفروض انو جميع الصور التي هي في مجلد watermark يتم طبع عليها العلامة المائية

تم تعديل هذه المشاركة بواسطة samy9o في 26 يناير 2012 في 19:13

1
#9
choclatboy كتب:

صحح

  $wt = new Watermark($path, 'watermark.png', 20, 5);

كما قال الاخ سامي لم يتم عرض اللجو على جميع الصور

#10
نهو الحالي كتب:

كما قال الاخ سامي لم يتم عرض اللجو على جميع الصور

السلام عليكم

هل تحاول وضع العلامة المائية على كل الصور الموجودة في مجلد معين وحفظها بنفس الاسم؟

#11
choclatboy كتب:

السلام عليكم

هل تحاول وضع العلامة المائية على كل الصور الموجودة في مجلد معين وحفظها بنفس الاسم؟

حياك الله اخي choclatboy نعم على جميع الصور موجود في مجلد واحد ولكن اسماء الصور مختلف

#12

السلام عليكم

قمت باضافة دالة save تقوم بحفظ الصورة

اولا تأكد ان الصور قابلة للكتابة اي chmod 0777

ثانيا تأكد ان extensions الصور ليست بالاحرف الكبيرة كـ JPG وانما كلها بالاحرف الصغيرة lowercase

في السطر الثالث غير 'images' الى اسم المجلد الذي فيه الصور

<?php

include_once('watermark.php');

// get all files in the folder 'images/'
$files = glob('images/{*.jpg,*.jpeg,*.png,*.gif}', GLOB_BRACE);

// add the watermark to the image
// make sure to chmod the images to 0777
foreach ($files as $file) {
	$wt = new Watermark($file, 'watermark.png', 20, 5);

	// check if the image file is_writable
	if (is_writable($file)) {	
		$wt->save($file);
	}
}

watermark2.zip

#13
choclatboy كتب:

السلام عليكم

قمت باضافة دالة save تقوم بحفظ الصورة

اولا تأكد ان الصور قابلة للكتابة اي chmod 0777

ثانيا تأكد ان extensions الصور ليست بالاحرف الكبيرة كـ JPG وانما كلها بالاحرف الصغيرة lowercase

في السطر الثالث غير 'images' الى اسم المجلد الذي فيه الصور

<?php

include_once('watermark.php');

// get all files in the folder 'images/'
$files = glob('images/{*.jpg,*.jpeg,*.png,*.gif}', GLOB_BRACE);

// add the watermark to the image
// make sure to chmod the images to 0777
foreach ($files as $file) {
	$wt = new Watermark($file, 'watermark.png', 20, 5);

	// check if the image file is_writable
	if (is_writable($file)) {	
		$wt->save($file);
	}
}

اهلا choclatboy

هل ضروي ان تحفض الصور حتى تتم عليها العملية ؟

لانو متلا الان انا لو طبقت العملية سيتم الطباعة على جميع الصور التى هي في المجلد

ولو ضفت صور جديدة ما ينطبق عليها العلامة المائية بشكل تلقائي حتى اقوم بزيارة الصفحة

http://127.0.0.1/wt/

اي حتى يشتغل ملف php

اظن انه في الاول كان افضل لانو لو انا اردت تغير لوجو لاحقا راح تصير مشكلة

عموما بارك الله فيك اخي الكريم عملت عمل جبار جزاك الله خير وان شاء الله في ميزان حسناتك

للاسف انا مبتدا في مجال php هناك الاف الداول لازم اطلع عليها ومنها دوال الصور .

تم تعديل هذه المشاركة بواسطة نهو الحالي في 27 يناير 2012 في 03:22

#14
اقتباس
للاسف انا مبتدا في مجال php هناك الاف الداول لازم اطلع عليها ومنها دوال الصور .

هناك داله واحد جميله وهي

exec

مع مكتبه Imagick

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#15
بسام العيساوي كتب:

هناك داله واحد جميله وهي

exec

مع مكتبه Imagick

اهلا اخي بسام ياريت تشرح طريقة تركيب الدالة لاني سبقت وذكرت اني مبتدا في php ولا اجيد داول التعامل مع الصور

وبارك اله فيك

#16

الداله exec تقوم بتنفيذ أوامر دوس أو تيرمينال في لينكس

مكتبه إميج ماجيك عباره عن تطبيق أو برنامج يتم تنفيذه عن طريق الدوس أو التيرمينال لذلك يجب تنزيل هذه المكتبه للتعامل معها ومعظم مواقع الإستضافه توفر هذه المكتبه بشكل تلقائي لذلك إستخدامها غير مقلق

كيف يتم إستخدام الداله

exec("any dos code here!") ;

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#17
بسام العيساوي كتب:

الداله exec تقوم بتنفيذ أوامر دوس أو تيرمينال في لينكس

مكتبه إميج ماجيك عباره عن تطبيق أو برنامج يتم تنفيذه عن طريق الدوس أو التيرمينال لذلك يجب تنزيل هذه المكتبه للتعامل معها ومعظم مواقع الإستضافه توفر هذه المكتبه بشكل تلقائي لذلك إستخدامها غير مقلق

كيف يتم إستخدام الداله

exec("any dos code here!") ;

خخخ من php رحنا على لينكس i :blink:

عموما شكراا لك اخي بسام

في انتضار الاخ choclatboy

#18

السلام عليكم

المشكلة ليست في الدوال او المكتبات، معظم مواقع رفع الصور تعتمد ترتيب الخطوات المبدئية التالية:

أولا: رفع الصورة بنجاح عن طريق واجهة خاصة بهذا العمل

ثانيا: وضع العلامة المائية على الصورة،

اذا اردت تغيير العلامة المائية لاحقا، يمكن الاحتفاظ بنسخة احتياطية من الصورة الاصلية،

تبقى الفكرة الاساسية هي ان طبع العلامة المائية عملية مكلفة وبالتالي يجب القيام بها مرة واحدة فقط اي بعد رفع الصورة مباشرة.

ثالثا: انتاج نسخة مصغرة thumbnail ذات ابعاد ومساحة صغيرة.

بالتوفيق ان شاء الله

#19
choclatboy كتب:

السلام عليكم

المشكلة ليست في الدوال او المكتبات، معظم مواقع رفع الصور تعتمد ترتيب الخطوات المبدئية التالية:

أولا: رفع الصورة بنجاح عن طريق واجهة خاصة بهذا العمل

ثانيا: وضع العلامة المائية على الصورة،

اذا اردت تغيير العلامة المائية لاحقا، يمكن الاحتفاظ بنسخة احتياطية من الصورة الاصلية،

تبقى الفكرة الاساسية هي ان طبع العلامة المائية عملية مكلفة وبالتالي يجب القيام بها مرة واحدة فقط اي بعد رفع الصورة مباشرة.

ثالثا: انتاج نسخة مصغرة thumbnail ذات ابعاد ومساحة صغيرة.

بالتوفيق ان شاء الله

عموما شكراااا لك اخي choclatboy ساقوم بجعل الصور تحفض على مرتين فهذه فكرة جديد

كما اني ارى ان طبع الصور المائية فوق الصور كل مرة سيأتر على السيرفر وسيطيل من عملية تحميل الصفحة اذا كان تحتوي على صور فهذا منطقي

ولكن سؤال هل مركز التحميل تعمتد الطريقة التى ذكرت انت ؟

لقد ارسلت لك على الخاص احدى اضافة ووردبريس تقوى بهذه العملية ولدى الملف لوحة تحكم

عموما اخي الكريم تمت اضافة على الاميل ياريت تقبل الاضافة اريدك في شئ مهم

شكرااا لجميع من ساهم معنا

اسئل الله العظيم ان يرزقني واياكم رضاه

مواضيع مشابهة