العلامة المائية باستخدام PHP. إضافة علامة مائية ديناميكية إلى صورة باستخدام PHP تحديد طريقة تطبيق العلامة المائية

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

هناك العديد من الطرق لإنشاء علامة مائية على صورة باستخدام PHP، لكن عميلي كان بحاجة إلى طريقة تطبيق تسمح له بتغيير العلامة المائية إلى علامة جديدة في أي وقت.

كما اتضح، هناك مثل هذا الحل.

يتم استخدام هذا عادةً من قبل الأشخاص الذين يقومون بتطوير مواقع الويب ذات المحتوى الرسومي في الغالب.

اختيار طريقة العلامة المائية

المشكلة في تنفيذ كل هذه الفوضى هي اختيار كيفية تطبيق العلامة المائية بين الأداء والمرونة. ببساطة لا يوجد حل مثالي يناسب الجميع. ولهذا السبب هناك العديد من التطبيقات.

في حالتي، يحتفظ العميل بالحق في تغيير العلامة التجارية في أي وقت وبدلاً من ذلك "القرون والحوافر"يكتب "الحوافر والقرون". يجب أن تتحمل طريقة العلامة المائية التي تختارها هذا أيضًا.

إن جوهر تقنية العلامة المائية الموضحة هنا هو إضافة هذه العلامة بالذات في كل مرة يتم فيها تحميل الصورة. نعم، تحمل هذه الطريقة عددًا من القيود التي يمكن أن تؤثر بشكل كبير على الأداء، ولكن كما يقولون، فإن العميل دائمًا على حق وبالتالي إذا كانت تلك القيود. تتطلب المهمة تطبيق علامة مائية ديناميكيًا، فهذا هو بالضبط ما يجب القيام به.

إذا كان لدى أي شخص طريقة أسهل، فنحن نرحب بالتعليق. سيكون من المثير للاهتمام الاستماع.

قبل تقديم بعض التعليمات البرمجية، أود أن أصف المزايا، بالإضافة إلى إعطاء مثال عملي.

الايجابيات:

  • يمكنك تغيير العلامة المائية على الأقل 500 مرة في اليوم؛
  • يمكن نشرها في أي نظام إدارة محتوى (CMS) (غير مرتبط به بأي شكل من الأشكال).

السلبيات:

  • يعتمد على أداء الاستضافة (إذا كان لديك الكثير من الصور أو كانت ذات دقة عالية، فقد يؤدي ذلك إلى وضع حمل كبير على الخادم)؛
  • سيظل العقل الفضولي قادرًا على إزالة العلامة المائية الخاصة بك.

الاستنتاجات:لنشر عدد صغير من الصور مع العلامات المائية، تعد هذه الطريقة مثالية، ولكن إذا كنت ستفتح معرضًا للصور، فمن الأفضل أن تبحث عن شيء أقل تحميلًا.

مثال

تنفيذ علامة مائية باستخدام PHP

كما وعدتك، لا تحتاج إلى أي معرفة خاصة بهذا الأمر، بل تحتاج إلى:

  1. الملف الموجود في الأرشيف، ووضعه في الدليل الجذر لموقعك؛
  2. نضع الصورة التي ستكون بمثابة علامة مائية في الدليل الجذر للموقع ونسميها (في حالتي، تكون بمثابة فرشاة بيضاء، لذا قد لا يكون الرابط مرئيًا في خلفية متصفحك). يجب أن تكون الصورة بصيغة PNG، لأنها تحتوي على طبقة شفافة. إذا كنت تريد استخدام GIF، فستحتاج إلى تحرير الملف image.php;
  3. في المكان الذي تريد عرض الصورة مع العلامة المائية، ضع الكود:

هذا كل شئ. الجميع سعداء، أنت والعميل.

إذا كنت تريد إضافة علامة مائية إلى صورة دون الحاجة إلى استخدام برامج تحرير الصور أو إضافتها أثناء تحميل الصور إلى الخادم، فهذا البرنامج التعليمي مناسب لك.

في هذا البرنامج التعليمي، سأوضح لك كيفية إضافة علامة مائية إلى صورة بسرعة دون تغيير الصورة الأصلية فعليًا. أولاً، ستحتاج إلى صورة لاستخدامها كعلامة مائية.

ثم نقوم بتكوين رأس الملف:

// سيخبر هذا السطر المتصفح أننا نمرر صورة jpg header("content-type: image/jpeg");

ثم نقوم بإنشاء صورة png ونحصل على أبعادها:

// أنشئ علامة مائية بتنسيق png $watermark = imagecreatefrompng("watermark.png"); // احصل على العرض والارتفاع $watermark_width = Imagesx($watermark); $watermark_height = imagesy($watermark);

سنفعل الشيء نفسه مع الصورة الأصلية، ولكن بتنسيق jpg فقط. يعد هذا أمرًا شائعًا بالنسبة للصور التي يتم تحميلها من خلال النموذج. نتصرف على النحو التالي:

// إنشاء صورة jpg $image_path = "original.jpg"; $image = imagecreatefromjpeg($image_path); // الحصول على حجم الصورة $size = getimagesize($image_path);

الآن نحتاج إلى وضع علامة مائية على الصورة:

// ضع علامة مائية في أسفل اليمين. المسافة البادئة 5 بكسل $dest_x = $size - $watermark_width - 5؛ $dest_y = $size - $watermark_height - 5؛

بعد ذلك، لنقم بإعداد خيارات المزج لكلتا الصورتين:

Imagealphablending($image, true); imagealphablending($watermark, true);

أخيرًا نقوم بإنشاء صورة جديدة باستخدام المعلمات:

// إنشاء صورة جديدة imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($image);

من المهم أن تقوم بالتنظيف بعد نفسك:

// تحرير الذاكرة imagedestroy($image); تدمير الصورة($علامة مائية);

يمكنك استخدام Photoshop لضبط شفافية العلامة المائية.

هذا كل شيء من الناحية النظرية. الآن دعونا نطبق معرفتنا على مشروع حقيقي. كل هذا يجب أن يتم حفظه في ملف. على سبيل المثال، يسمى watermark.php

Header("نوع المحتوى: صورة/jpeg"); // احصل على اسم الصورة عبر GET $image = $_GET["image"]; // إنشاء علامة مائية $watermark = imagecreatefrompng("watermark.png"); // احصل على ارتفاع العلامة المائية وعرضها $watermark_width = Imagesx($watermark); $watermark_height = imagesy($watermark); // إنشاء ملف jpg من الصورة الأصلية $image_path = "/path/to/image/folder/" . صورة $; $image = imagecreatefromjpeg($image_path); // إذا حدث خطأ ما إذا ($image === false) (return false;) $size = getimagesize($image_path); // ضع علامة مائية على الصورة $dest_x = $size - $watermark_width - 5; $dest_y = $size - $watermark_height - 5؛ imagealphablending($image, true); imagealphablending($watermark, true); // إنشاء صورة جديدة imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagejpeg($image); // تحرير الذاكرة imagedestroy($image); تدمير الصورة($علامة مائية);

الآن، من أجل إظهار صورة بعلامة مائية دون تغيير الصورة الأصلية، استخدم الكود التالي.

غالبًا ما يواجه أصحاب مواقع الويب (المنتديات ولوحات الرسائل وما إلى ذلك) مشكلة إنشاء علامات مائية على جميع الصور الكبيرة للموقع.

بالطبع، يمكنك حل هذه المشكلة عن طريق إنشاء علامة مائية يدويًا على كل صورة، ولكن أولاً، يستغرق هذا الكثير من الوقت، وثانيًا، يصبح من الضروري تخزين نسختين من الصورة، مع علامة مائية وبدونها.

يمكن أن يكون حل هذه المشكلة هو تطبيق علامة مائية على الصورة ديناميكيًا قبل إرسالها إلى زائر الموقع.

يوجد حل لهذه المشكلة على الإنترنت في شكل ملفين، محتوياتهما موضحة أدناه.
الكود المصدري للملف ".htaccess".

DirectoryIndex Index.php RewriteEngine On RewriteCond %(REQUEST_FILENAME) -f RewriteRule ^(.*)$ /watermark/_watermark.php

الكود المصدري للملف "_watermark.php"

250) && ($info_o > 250)) ( // للصور التي لا تحتوي على قناة ألفا // المعلمة الأخيرة للوظيفة هي درجة عتامة العلامة المائية imageCopyMerge($out, $watermark, ($info_o-$info_w)/ 2, ($info_o -$info_w)/2, 0, 0, $info_w, $info_w, 25); // بالنسبة للصور ذات قناة ألفا // في هذه الحالة، يتم ضبط الشفافية بواسطة قناة ألفا للصورة نفسها // imageCopy($out, $watermark, ($info_o-$info_w)/2, ($info_o-$info_w)/2, 0, 0, $info_w, $info_w ) التبديل ($info_o) ( الحالة 1: imageGIF($out); الحالة 2: imageJPEG($out); imageDestroy($original); imageDestroy($watermark); عودة صحيحة؛ ) ؟>

يتلخص الحل في ما يلي: يتم وضع ملف ".htaccess" في الدليل مع ملفات الصور. بالإضافة إلى ذلك، يتم إنشاء مجلد "العلامة المائية" على الخادم، حيث يوجد ملف البرنامج النصي "_watermark.php" وملف العلامة المائية الفعلي "watermark.png".

وفي الوقت نفسه، مقارنة بالإصدار الأصلي الموجود على الإنترنت، قمت بإجراء تغييرات طفيفة على كلا الملفين النصيين.

في ملف ".htaccess"، تمت إضافة امتداد "jpeg" إلى التعبير العادي للبحث عن ملفات الصور، كما أنه يتكرر أيضًا.

تمت إعادة صياغة البرنامج النصي "_watermark.php" بحيث يتم وضع العلامة المائية في وسط الصورة (كان هذا مطلوبًا بسبب تفاصيل المشكلة التي يتم حلها) وأصبحت القدرة على ضبط شفافية العلامة المائية التي تم إنشاؤها تمت إضافتها (ستساعدك التعليقات الموجودة في نص البرنامج النصي على تكوين هذه المعلمة بنفسك).

كما يجب عليك الانتباه إلى أن وضع مجلد "العلامة المائية" في مجلد الصور، كما تنصح المصادر الأصلية، لن نحقق النتيجة المرجوة، لأن في هذه الحالة سيكون علينا أن يكون لدينا ملف ".htaccess" الخاص به ومجلد "العلامة المائية" في كل مجلد. ويرجع ذلك إلى حقيقة أن ملف ".htaccess" يحدد المسارات المطلقة من الدليل الجذر للموقع إلى ملف "_watermark.php". وبالتالي، مع وجود مجلد فرعي منفصل "للعلامة المائية" في كل مجلد يحتوي على صور، إذا أردنا تغيير العلامة المائية (أو البرنامج النصي الذي يتراكب عليها على الصورة)، فسيتعين علينا إجراء تغييرات في جميع المجلدات.

ولتجنب هذه المشكلة أنصح بإنشاء مجلد "العلامة المائية" في الدليل الجذر للموقع، ووضع ملف ".htaccess" في أدلة الصور دون الحاجة إلى تغييره في كل مرة. في هذه الحالة، لتغيير العلامة المائية أو البرنامج النصي، سنحتاج إلى إجراء التغييرات في مكان واحد فقط على الموقع. في هذه الحالة، يمكنك إنشاء علامات مائية مختلفة لمجلدات مختلفة تحتوي على صور عن طريق الإشارة من ملفات ".htaccess" المختلفة إلى نصوص برمجية مختلفة، على سبيل المثال "_watermark-1.php" و"_watermark-2.php" وما إلى ذلك.

وبالتالي، لتلخيص ذلك، يمكننا القول أنه لتطبيق العلامات المائية على جميع صور الموقع، تحتاج إلى تنزيل الأرشيف المرفق أدناه، وفك ضغطه، ووضع مجلد "العلامة المائية" في الدليل الجذر للموقع، واستبدال ملف العلامة المائية " watermark.png" فيه بملفك الخاص، ثم ضع ملف ".htaccess" في أدلة الموقع تلك، والتي يجب وضع علامة مائية على الصور منها.

يمكنك تنزيل الأرشيف الذي يحتوي على جميع الملفات الضرورية على هذا

إنك تخاطر بشكل كبير عندما تنشر صورك ومقاطع الفيديو الخاصة بك على الإنترنت، حيث يمكن بسهولة نسخ المواد الخاصة بك إلى مئات الموارد الأخرى. لن يكون من الرائع أن تجد صورتك لخبر إخباري، على سبيل المثال، عملت عليه بجد، على موقع آخر دون الإشارة إلى المصدر، أي موقعك، أليس كذلك؟ بعبارة ملطفة، سوف تنزعج، وإذا لم تكن صورة بسيطة للأخبار، ولكنها مهمة معقدة في الفوتوشوب، فإن القول بأنك ستغضب هو عدم قول أي شيء! إذن ما الذي يمكنك فعله لحماية رسوماتك؟

لحماية حقوق الطبع والنشر للصور أو مقاطع الفيديو الموجودة على الإنترنت، عادةً ما يتم استخدام العلامة المائية الرقمية أو العلامة المائية الرقمية للملاءمة. قم بإرفاق لافتة رقمية لكل صورة تم تحميلها لحمايتها. يمكن أن يكون CEZ شعارًا لموقع الويب الخاص بك أو شركتك، ويتم وضعه بشكل جميل وجمالي على الصور التي تم تحميلها.

لنقم أولاً بإنشاء ملف يحتوي على الإعدادات الضرورية على شكل ثوابت - /config.php:

تعريف("WATERMARK_OVERLAY_IMAGE", "/develop/images/watermark.png"); // المسار إلى قاعة المعارض المركزية الخاصة بك Define("WATERMARK_OUTPUT_QUALITY", 100); // جودة الصورة الناتجة من تسجيل الفيديو الرقمي. تذكر أن الجودة تؤثر بشكل مباشر على حجم الملف. تعريف ("UPLOADED_IMAGE_DESTINATION"، "/develop/folder1/")؛ // المسار إلى موقع الصور المحملة الأصليةdef("WATERMARK_IMAGE_DESTINATION", "/develop/folder2/"); // المسار إلى الصور ذات الشكل الموجي الرقمي المتراكب

لنقم بتجميع الملفات التي تم إنشاؤها أعلاه في الملف الذي يقوم بتنفيذ التنزيل /upload.php

تشمل("config.php"); include("functions.php"); $result = ImageUpload($_FILES["userfile"]["tmp_name"], $_FILES["userfile"]["name"]); إذا ($result === false)( echo "فشل التنزيل!"; )

على سبيل المثال، إذا كانت الصورة التي يتم تحميلها:

ثم بعد تنزيل العلامة المائية وتطبيقها، ستظهر لك الصورة التالية:

في هذا المثال، يتم حفظ الصورة التي تم تنزيلها في مجلد واحد، والصورة التي تم تركيب العلامة المائية الرقمية عليها في مجلد آخر، بحيث يمكنك دائمًا الوصول إلى الصور الأصلية، ولكن بالطبع، يستحق نشر الصور من الرقمي المعرض على الموقع.

(178.4 كيلو بايت، 989 زيارة)

هناك عدد كبير من الصور على شبكة الإنترنت، والتي عادة ما يتم تحميلها من قبل أصحاب المواقع أو مستخدمي الموقع. اعتمادًا على مدى أهميتها، قد تنتقل الصورة من موقع إلى آخر. ناهيك عن حقوق الطبع والنشر، قد لا يحب كل مالك الموقع حقيقة أن الصور من موقعه يتم نسخها على موارد أخرى. كوسيلة لمكافحة النسخ المبتذل لصور الموقع، تم اختراع تطبيق علامات مائية على الصور، مما يشير إلى أن الصورة تنتمي إلى مورد معين. يمكن أن ينطبق هذا بشكل خاص على المواقع التي تحتوي على عدد كبير من الصور الفريدة.

دعونا نلقي نظرة على مثال التعليمات البرمجية الذي يوضح تطبيق علامة مائية على الصور التي تم تنزيلها.

لذلك، الإعدادات الرئيسية موجودة في شكل ثوابت، وتأتي أولاً في الكود:

// تحديد المسار إلى صورة العلامة المائية("WATERMARK_OVERLAY_IMAGE"، "/lab/watermark/watermark.png")؛ // الضغط، النطاق 0-100 (يؤثر على جودة الصورة) Define("WATERMARK_OUTPUT_QUALITY"، 100); // المجلد الذي يحتوي على الصور المصدر تحدد("UPLOADED_IMAGE_DESTINATION"، "/lab/watermark/upload/src/")؛ // المجلد الذي يحتوي على صور معالجة محدد ("WATERMARK_IMAGE_DESTINATION"، "/lab/watermark/upload/")؛

سنضع على الصفحة نموذج تحميل الصور، والذي سيتم من خلاله إرسال الصور إلى الخادم.
رمز النموذج:

حدد ملف الصورة:
الصورة الأصلية
" style="max-width: 300px;" />
الصورة مع العلامة المائية
" style="max-width: 300px;" />

حسنا، الآن الشيء الأكثر أهمية هو وظائف معالجة الصور. يجب وضع هذه الوظائف قبل عرض النموذج على الصفحة.

وظيفتان رئيسيتان، إحداهما هي تحميل الصورة إلى الخادم، والأخرى، تطبيق العلامة المائية. ربما يتم وصف التعليقات على الوظائف بمزيد من التفصيل، وسيكون من غير الضروري كتابة نفس الشيء هنا.