ما افضل plugin او أسلوب لـ CodeIgniter لعمل مصغرات الصور لموقع بياناتوا كبيرة من ناحية الأداء

  • true

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

ما هو أفضل plugin او طريقة لـ Codeigniter لعمل مصغرات لصور الموقع باحجام مختلفة لموقع بياناتوا كبيرة,

ما هو أفضل أسلوب من ناحية: الأداء والسرعة, أفراغ أو مسح المصغرات بسهولة دون خلط المصغرات مع الصور الأصلية, قابلية الوصول الوصول لمصغرات عضو محدد, ولا أريد هذة الاسلوب فى التصغير Thum.php?img=/uploads/car.jpg&width=150&height=120

بسبب الضغط على السيرفر فى كل مرة للتاكد من وجود المصغرة وانوا لا يتناسب معى لانى اريد الانتقال الى خدمات amazon

فى أنتظار أقتراحاتكم.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

أفضل طريقة للمحافظة علي الأداء إنشاء الصور المصغرة عند الرفع والتعامل معها كصورة ثابته.

مكتبة قد تفيدك :

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

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

فعلآ هذا حل رائع من ناحية الاداء وفكرت فية انى اقوم بعمل اضافة فى لوحة المدير المدير لأعادة توليد صور للموقع فى حال اعتماد قياسات جديدة

صديقي العزيز. ولم عناء البحث عن مكتبة خارجية في حين ان Codeigniter يوفر ما تريد وزيادة (خدمة ٥ نجوم) :

  • تحجيم الصور

  • انشاء المصغرات

  • قطع الصور

  • تدوير الصور

  • اضافة العلامة المائية

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

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

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

    public function upload_file($field_name,$file_name,$folder,$allowed_exts,$max_size){

        $path = FCPATH."uploads".$folder;

        if(!is_dir($path)){ mkdir($path);  @file_put_contents($path."index.html","Forbidden"); }

        $config['upload_path'] = $path;
        $config['allowed_types'] = $allowed_exts;
        $config['max_size']    = $max_size;
        $config['file_name'] = $file_name;
        $config['overwrite'] = false;                                   
        $this->load->library('upload', $config);

        $uploaded = $this->upload->do_upload($field_name);        
        $upload_data =  $this->upload->data();

        if($upload_data["file_type"] && $upload_data["file_ext"] && $upload_data["client_name"]){

            $status = "success";    
            $file_size = $upload_data["file_size"];                
            $file_path = $upload_data["full_path"];

            $max_width = 500; // max width  
            $max_thumb = 250; // max thumb width  
            $file_path = $this->resize_me($file_path,$max_width,FALSE); // resize to max width
            $thumb_name = "thumb_".$upload_data["orig_name"]; // thumb name
            $thumb_url = $folder.$thumb_name; // thumb url
            $thumb_path = $this->resize_me($file_path,$max_thumb,FALSE,FALSE,TRUE); // resize thumb                   

        }


    }




    public function resize_me($path,$width,$height,$percent = 100 ,$new = FALSE){

        if( ($width && $height) || ($width) || $percent){

            list($mywidth, $myheight, $type, $attr) = getimagesize($path);       

            $config['quality'] = "100%";   

            $cancel = FALSE;

            if($width > $mywidth){
                $width = $mywidth;
            }

            $config['width'] = $width;                                  

            $config['maintain_ratio'] = TRUE;
            $this->load->library('image_lib');                            
            // resize
            $config['image_library'] = 'gd2';
            $config['source_image'] = $path;

            if($new == TRUE){               
                $filename = basename($path);
                $config['new_image'] = $path = str_replace($filename,"thumb_".$filename,$path);
            }

            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            // resize

            return $path;

        }

    }

شكرآ جزيلآ اخى عبد الله على الدوال المرفقة لقد وفرت على الكثير

قمت بذلك في نظام لإدارة المحتوى عن طريق عمل مجلد للصور المصغرة Thumbnails, حيث يتم تصغير الصورة المرفوعة تلقائياً وعمل نسخة منها.