مثلا اريد رفع صورة بحجم 2 ميغا يتم ضغطها لتصبح مثلا 500 كيلو لتفادي استهلاك المساحة و ايضا لتفادي زيادة حجم الصفحة الويب
هل من اقتراحات ؟
هل لك تجربة في هذا ؟
مثلا اريد رفع صورة بحجم 2 ميغا يتم ضغطها لتصبح مثلا 500 كيلو لتفادي استهلاك المساحة و ايضا لتفادي زيادة حجم الصفحة الويب
هل من اقتراحات ؟
هل لك تجربة في هذا ؟
لمَ لا تستخدم Imagick مباشرةً (إضافة Image Magick لـPHP تتعامل مع أغلب/كل صيغ الصورة، وموجودة في أغلب الاستضافات، لن تجد أفضل من هذا)؟ -لا تحتاج إلى Laravel في كل شيء-، آخر تجربة لي معها كانت في ملهم تضغط الصور ولا تؤثر على جودة العرض:
$img = new \Imagick('image.png');
$img->setFormat('jpeg');
// مساحة العرض كن دقيقًا لكي لا تؤثر على جودة عرض الصورة
$img->scaleImage(400, 0);
$img->setImageCompression(\Imagick::COMPRESSION_JPEG);
$img->setImageCompressionQuality(80);
$img->writeImage('image.jpeg');
ملاحظات:
لن تحتاج إلى جعل الجودة 80% دائمًا.
في الشيفرة في الأعلى العرض 400px والطول تلقائي غيرها إلى مساحة عرض الصورة لديك.
تخرج الصور بصيغة jpeg (الأقل حجمًا في هذه المكتبة) غيرها إن أردت ستحتاج إلى تغيير طريقة الضغ.
إذا أردت تخصيص أفضل في تصغير الصور لا تسخدم scaleImage استخدم resizeImage توّفر اختيارات أكثر.
إن كنت تعمل على خادوم محلي عندك قد لا تجد Imagick منصبة لكن تنصيبها سهل جدًا -خصوصًا في Linux- يكفيك البحث، ستجدها منصبة على الأغلب إذا تستخدم استضافة مشتركة، وتنصيبها على خادومٍ لك سهل جدًا.
شكرا جزيلا على الجواب
لا تحتاج إلى Laravel في كل شيء-
انا غالبا استعمل اطار عمل لارافيل وافضل وجود package جاهز بدل استعمال php مباشرة حتى اختصر الوقت وسهولة التطوير وتصليح الاخطاء
بهذه الطريقة التي عرضتها هل تحافظ الصورة على جودتها عند عرضها مباشرة بعد اعادة التحجيم دون الحفظ؟
استخدم مكتبة Intervention
http://packalyst.com/packag...
اعادة تحجيم الصور يقلل الحجم بشكل كبير، في مجال الويب في أغلب الأحيان لست بحاجة لأحجام صور أكبر من 768*1024
ستقوم بقياس عرض وارتفاع الصورة فإن كان الإرتفاع أكبر ستقوم بإعادة التحجيم الرأسي للصورة مع الحفاظ على نسبة العرض مع الإرتفاع وإن كان العرض أكبر ستقوم بعملية التحجيم العرضي للصورة وإن كان أبعاد الصورة أصغر من الإرتفاع والعرض المطلوب يتم حفظها مباشراً بدون تحجيم.
يُمكن أيضاً تقليل الجودة quilty للصورة إلى 60 أو 75 فلن تؤثر على جودتها كثيراً ولكن ستقلل من حجمها بشكل ملحوظ.
لن تصل أحجام الصور حتى لـ 500 بعد إعادة التحجيم لإرتفاع 800 وعرض 1024
بالنسبة للصور من نوع png فأحجامها بعد إعادة التحجيم لا تقل بنفس المُعدل في صور jpg ولكن هناك حلول عبر مكتبات لخوادم ليونكس لتحجيم هذا النوع على الخادم يُمكن استدعائها عبر php.
بارك الله فيك
قرأت عليها
لكن هل تحافظ على جودة الصورة مثلا قمت بتصغير حجم صورة وعرضها دون حفظها هل تبقى بجودتها او تفقدها ؟
لا تؤثر على الجودة طالما لم تغير في قيمة الجودة quilty ففقد الحجم يكون بسبب تصغير أبعاد الصورة.
عملية العمل على الصور تستهلك موارد المُعالج والذاكرة فالأفضل حفظها، إذا كان هناك ضغط على الخادم سيؤدي تنفيذ الكثير من عمليات معالجة الصور على الخادم إلى شل حركته.
وما رأيك باستخدام طريقة الروابط
مثلا اضع سكريبت التحجيم في كونترولر معين وارسل له الصورة مع الطول والعرض ويعطيني الصورة واعرضها مباشرة ؟
هل هذه الطريقة لها مساوء وتسبب ضغط على السيرفر؟
@ahmedsaoud31 آسف للتدخل هنا :)
لدي تجربة مع هذا، لا تستخدمه أبدًا أبدًا كان أغبى شيء فعلته ضغط الصور يحتاج إلى عمليات تفسير وقراءة والكثير الكثير من العمليات، وضغط الصورة عند كل مرة يطلبها المستخدم بالحجم الذي يريده كان جنونًا، الأفضل حفظ الصورة عند رفعها بأحجام مختلفة للعرض، وليس ضغطها كل مرة -حينها تسببت باستهلاك موارد الاستضافة بعد اسبوع بسبب قراءة الملفات الـIO أتذكر ومع استخدام عالي للـCPU مستخدمون الموقع كانواْ كثر عمومًا هذا سيء-.
أضيف على رد @يوسف سيد
إن كان أمر الصور يشغلك يُمكنك الإعتماد على API خارجي للصور ويذودك بالأحجام التي تريدها أو الإعتماد على مساحة تخزينية خارجية منخفضة التكلفة تديرها عبر API لحفظ الصور.
استخدم مكتبة Intervention
http://packalyst.com/packag...
اعادة تحجيم الصور يقلل الحجم بشكل كبير، في مجال الويب في أغلب الأحيان لست بحاجة لأحجام صور أكبر من 768*1024
ستقوم بقياس عرض وارتفاع الصورة فإن كان الإرتفاع أكبر ستقوم بإعادة التحجيم الرأسي للصورة مع الحفاظ على نسبة العرض مع الإرتفاع وإن كان العرض أكبر ستقوم بعملية التحجيم العرضي للصورة وإن كان أبعاد الصورة أصغر من الإرتفاع والعرض المطلوب يتم حفظها مباشراً بدون تحجيم.
يُمكن أيضاً تقليل الجودة quilty للصورة إلى 60 أو 75 فلن تؤثر على جودتها كثيراً ولكن ستقلل من حجمها بشكل ملحوظ.
لن تصل أحجام الصور حتى لـ 500 بعد إعادة التحجيم لإرتفاع 800 وعرض 1024
بالنسبة للصور من نوع png فأحجامها بعد إعادة التحجيم لا تقل بنفس المُعدل في صور jpg ولكن هناك حلول عبر مكتبات لخوادم ليونكس لتحجيم هذا النوع على الخادم يُمكن استدعائها عبر php.
بالنسبة للصور من نوع png فأحجامها بعد إعادة التحجيم لا تقل بنفس المُعدل في صور jpg ولكن هناك حلول عبر مكتبات لخوادم ليونكس لتحجيم هذا النوع على الخادم يُمكن استدعائها عبر php.
الحل في هذا هو تحويلها إلى jpeg، ضغط صور png هو شيء غير منطقي بالمرة لأن صيغ png هي صيغ Lossless لم تصمم للضغط.
تحويل الـ png إلى jpg يُفقدها خاصية الشفافية في حال وجودها.
هذه هي المكتبة التي قصدتها
يُمكن استخدمها من خلال php عبر shell_exec
تحويل الـ png إلى jpg يُفقدها خاصية الشفافية في حال وجودها.
الكل يعرف هذا :).
يمكن أيضًا تحويل الصورة إلى png8 من Imagick إذا كنت تريد الحفاظ على شفافية الصورة -عن تجربة هذا سيء في الصور ذات العرض الكبير الجودة تنخفض-، ببساطة وبدون أي مكتبات خارجية:
$im->setImageFormat('PNG8');
shell_exec هو خيار متاح فقط إن كنت تملك خادمًا خاصًا، غير هذا لا.
التعليقات