تقليل حجم المستخدم تجسد الآلهة؟ - إنشاء الصور المصغرة

StackOverflow https://stackoverflow.com/questions/1483687

سؤال

مستخدم تحميل الصور التي تستخدم الصور التي تستخدم الصور تجسدي. لقد قمت بتعيين حجم حد التحميل من 2 ميغابايت. في معظم الأماكن، أطلب فقط الصور المصغرة. لكن المستخدمين قم بتحميل الصور مع قرارات أكبر بكثير. قمت بتخزين هذه الملفات على نظام الملف الخاص بي.

كيف يمكنني إنشاء الصور المصغرة وتخزينها بدلا من الملفات الكبيرة الحجم؟

هل كانت مفيدة؟

المحلول

اعتمادا على إعداد التثبيت / الخادم الخاص بك، لديك العديد من الاحتمالات.

أود أن أقول أنني لم أر خادم دون تثبيت GD - ل Image، من المحتمل أن يتم تثبيته بشكل افتراضي :-(


قد يكون حل آخر هو الاتصال يتحول فائدة سطر الأوامر (يأتي مع ImageMagick - باستقلال أي امتداد PHP), ، باستخدام شيء مثل exec للاتصال بها.

ميزة، مع ذلك، ستكون أنك لن تكون محدودة memory_limit, ، نظرا لأن تغيير حجمها سيتم تنفيذها بواسطة أداة خارجية - ولكن، بالطبع، فهذا يعني أيضا أن طلبك سوف يعتمد على أداة خارجية، وهو ليس لطيفا دائما ...


إذا لزم الأمر، هناك الكثير من البرامج التعليمية حول GD؛ على سبيل المثال، قد تهمك أولئك:

نصائح أخرى

يمكنك استعمال ال وحدة GD. أو ال وحدة ImagemAgick. لتغيير حجم وتقليص أي صور تم تحميلها.

إذا كنت جوجل حول شيء مثل "PHP Image Resizer"، ستجد الكثير من الأمثلة. أميل إلى استخدام GD، حيث أن لدي جزء قديم من الرموز التي تعمل حولها تعمل على ما يرام. على افتراض أن لديك صورة JPEG معروفة موجودة في $srcImgPath, ، يمكنك أن تفعل شيئا مثل ما يلي، حيث $newWidth و $newHeight هي الأحجام الجديدة للصورة التي تريدها:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

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

تحقق من مكتبة GD، وتحديدا imageCopyresized وظيفة

مجرد ملاحظة سريعة، إذا انخفضت في المسار GD، استخدم ImageIcopyresampleed، لأنها تنتج صورا نظافة المظهر. يعني ذلك أنه لن يبدو أنه محبب و / أو باكسي.

رابط إلى دليل PHP على الوظيفة: http://us2.php.net/manual/en/function.imagecopyresampled.php.

أود أن أوصي البرنامج النصي timthumb.php. انها صخرة الصلبة.http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-reled/

إذا كنت قد تم تثبيت Imagick في إعداد PHP الخاص بك. ثم هناك وظيفة تفعل هذا. Imagick :: Thumbnailimage ()

إذا لم يكن لديك صور، فسوف تأتي مكتبة GD في متناول اليدين. منذ أن لديهم خياطة ()

ليس Google Appengine مزودة بمجموعة فرعية من PIL؟ هناك وظيفة "تغيير الحجم" التي يمكن استخدامها ... والأفضل من ذلك كله، أنت تحصل على حصة مجانية!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top