سؤال

كنت مفتونا من قبل هذه المناقشة من التحجيم من الصور ووجدت بعد ذلك أن رمز PHP الذي أستخدمه لإنشاء الصور المصغرة من الصور التي تم تحميلها تعاني من نفس المشكلة. قررت تجربة PHP Fix المنشورة بالقرب من أسفل (تحويل Gamma من 2.2 إلى 1.0، قم بتغيير حجم الصورة، وتحويل Gamma مرة أخرى من 1.0 إلى 2.2). يعمل هذا على حل المشكلة التي تمت الإشارة إليها في المقالة، ومع ذلك، فإن هذا التعديل للقانون له التأثير الجانبي المؤسف لإخراج شفافية قناة PNG ألفا.

هنا هو الرمز الذي لدي مع تصحيح Gamma في مكانه.

giveacodicetagpre.

أي شخص يعرف كيفية تغيير حجم الصورة، وتوظيف خدعة تصحيح جاما، مع الحفاظ على شفافية قناة ألفا للصورة الأصلية؟

تحرير

صور عينة:

  1. الملف الأصلي - PNG مع شفافية قناة ألفا
  2. ملف تغيير الحجم مع كل من مكالمات الدالة ImageGammAchacorret () تعلق على
  3. ملف تغيير الحجم مع كل من مكالمات الدالة ImageGammACorect () في مكان
  4. يمكنك أن ترى أن الشفافية على ما يرام حتى تحاول تصحيح GAMMA. (أسهل طريقة لرؤية الشفافية تعمل أدناه هي فحص علامة الفقرة ملفوفة حول الصور وإضافة خلفية: أسود؛ لسمة أسلوبها عبر Firebug أو ما شابه ذلك)

    href="http://oled.hosting.emarkethouth.com/images/test-image.png" rel="nofollow noreferrer"> الصورة الأصلية http://ynder.hosting.emarketsouth.com/images.com /test-image.png لا تصحيح جاما http:///ner.hosting.emarketsouth .com / images / اختبار - صورة - لا no-gamma.png جاما تصحيح - لا شفافية http://ynding.marketsouth.com /IMages/Test-Image-Resized.png

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

المحلول

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

تخميني هو أن وظيفة ImageGammACorect () لها خطأ. ربما ينطبق GAMMA فقط على RGB و GD يحاول القيام بنفس الحساب على قناة ألفا أيضا؟ نظرية الألوان ليست بلدي فورتي.

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

giveacodicetagpre.

استبدال القيم المشفوفة بجد مع المتغيرات بالطبع ... وهنا النتيجة التي أستخدمها في استخدام صورتك والرمز الخاص بي:


(المصدر: jejik.com )

نصائح أخرى

هناك مشكلة في ImageIcopyresampleed () والشفافية.ألق نظرة على هذا التعليق على php.net الحل الممكن.

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