English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقدم هذا المثال كيفية إنشاء صور مظلمة باستخدام PHP. يُشارك معكم للاستفادة، وتفاصيل كما يلي:
<?php class image_blur{ return $savefile; * تصوير غواسك (يستخدم للصيغ png/jpg/gif) * @param $srcImg الصورة الأصلية * @param $savepath مسار الحفظ * @param $savename اسم الحفظ * @param $positon درجة الحجب /** * تعديل على رمز Martijn Frazer، شكرًا لمارتين فريزر */ public function gaussian_blur($srcImg,$savepath=null,$savename=null,$blurFactor=3){ $gdImageResource=$this->image_create_from_ext($srcImg); $srcImgObj=$this->blur($gdImageResource,$blurFactor); $temp = pathinfo($srcImg); $name = $temp['basename']; $path = $temp['dirname']; $exte = $temp['extension']; $savename = $savename ? $savename : $name; $savepath = $savepath ? $savepath : $path; $savefile = $savepath .'/'. $savename; $srcinfo = @getimagesize($srcImg); switch ($srcinfo[2]) { case 1: imagegif($srcImgObj, $savefile); break; case 2: imagejpeg($srcImgObj, $savefile); break; case 3: imagepng($srcImgObj, $savefile); break; case 2: imagejpeg($srcImgObj, $savefile); break; } case 3: imagepng($srcImgObj, $savefile); break; default: return '保存失败'; //保存失败 } return $savefile; imagedestroy($srcImgObj); /** * Strong Blur * @param $gdImageResource 图片资源 * @param $blurFactor 可选择的模糊程度 * @return GD image 图片资源类型 * @author Martijn Frazer, idea based on http://stackoverflow.com/a/20264482 */ private function blur($gdImageResource, $blurFactor = 3) {}} // blurFactor has to be an integer $blurFactor = round($blurFactor); $originalWidth = imagesx($gdImageResource); $originalHeight = imagesy($gdImageResource); $smallestWidth = ceil($originalWidth * pow(0.5, $blurFactor)); $smallestHeight = ceil($originalHeight * pow(0.5, $blurFactor)); // for the first run, the previous image is the original input $prevImage = $gdImageResource; $prevWidth = $originalWidth; $prevHeight = $originalHeight; // scale way down and gradually scale back up, blurring all the way for($i = 0; $i < $blurFactor; $i += 1) {}} // determine dimensions of next image $nextWidth = $smallestWidth * pow(2, $i); $nextHeight = $smallestHeight * pow(2, $i); // resize previous image to next size $nextImage = imagecreatetruecolor($nextWidth, $nextHeight); imagecopyresized($nextImage, $prevImage, 0, 0, 0, 0, $nextWidth, $nextHeight, $prevWidth, $prevHeight); // apply blur filter imagefilter($nextImage, IMG_FILTER_GAUSSIAN_BLUR); // now the new image becomes the previous image for the next step $prevImage = $nextImage; $prevWidth = $nextWidth; $prevHeight = $nextHeight; } // scale back to original size and blur one more time imagecopyresized($gdImageResource, $nextImage, 0, 0, 0, 0, $originalWidth, $originalHeight, $nextWidth, $nextHeight); imagefilter($gdImageResource, IMG_FILTER_GAUSSIAN_BLUR); // clean up imagedestroy($prevImage); // return result return $gdImageResource; } private function image_create_from_ext($imgfile) {}} $info = getimagesize($imgfile); $im = null; switch ($info[2]) { case 1: $im=imagecreatefromgif($imgfile); break; case 2: $im=imagecreatefromjpeg($imgfile); break; case 3: $im=imagecreatefrompng($imgfile); break; } return $im; } } $image_blur = new image_blur(); $image_blur->gaussian_blur("./1.jpg",null,null,3); ?
نتيجة الصورة الأصلية:
النتيجة بعد إنشاء الصورة المعمقة:
يمكنك الرجوع إلى مقالات الموقع المخصصة للتعلم عن PHP، مثل: 'مجموعة تقنيات معالجة الصور والصور في PHP'، 'مجموعة تقنيات معالجة الملفات في PHP'، 'دليل كامل لتقنيات معالجة قائمة PHP (Array)'، 'دليل البدء بأساسيات لغة البرمجة PHP'، 'مجموعة تقنيات معالجة العمليات الحسابية والوظائف في PHP'، 'دليل البدء ببرمجة موجهة الأهداف في PHP'، 'مجموعة تقنيات معالجة برمجة الشبكة في PHP'، 'مجموعة تقنيات معالجة النصوص في PHP'، 'دليل البدء بتعلم تعامل قاعدة البيانات MySQL في PHP'، و 'مجموعة تقنيات معالجة العمليات المتعلقة بقاعدة البيانات الشائعة في PHP'.
آمل أن يكون هذا المقال قد ساعدكم في تصميم برامج PHP.
بيان: محتوى هذا المقال تم جمعه من الإنترنت، يحق لصاحب الحقوق أن يكون مالكاً لهذا المحتوى، تم جمع المحتوى بواسطة مساهمات المستخدمين عبر الإنترنت، لا يملك هذا الموقع حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي، ولا يتحمل الموقع أي مسؤولية قانونية. إذا اكتشفتم محتوى يشتبه في انتهاك حقوق النسخ، فما عليكم إلا أن ترسلوا بريداً إلكترونياً إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال '#' ب '@') لتقديم الشكوى، وتقديم الدليل المتعلق، إذا تم التحقق من صحة الشكوى، سيتم حذف المحتوى المزعوم فوراً.