بأي حال من الأحوال لجعل زوايا جولة مستديرة لطيفة للصور في بيثون؟

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

سؤال

هل هناك أي طريقة لجعل زوايا جولة لطيفة مع بيثون؟ يتم استخدام PIL و GD2 حاليا في مشروعي. كلاهما لديه arc() الطريقة، التي تتيح لك رسم دائرة إخراج، ولكن الدائرة الراحة ليست حافذة، وبالتالي تبدو الصورة متميزة.

هل هناك أي طريقة أنيقة لجعل زوايا المستديرة ضد الفاصل / السلس؟

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

المحلول 3

حسنا، حسنا، لقد وجدت الحل.

لقد استخدمت طريقة Sustersampling بوبين اقترح من قبل، لكنني وجدت أن الصور تصبح ضبابية. لذلك، لن أقدم الكود الكامل، لكنني سأشرح حلاي.

قد يبدو نوعا من الأغنية، لكنني لم أجد أي طريقة أخرى للقيام بذلك دون إشراك أي مكتبات أخرى.

مع PIL يمكنك رسم أبيض (أو أي لون تحتاجه، التي تنطوي على تلك الشفافية) الزوايا على الصورة. ثم نسخها. يجب أن يكون لديك الآن صورتان مع زوايا جولة بيضاء مقرمشة غير واضعة.

الآن يجب عليك استخدام المقياس -> Systems-Down Superersaming (انظر بوبينس الإجابة أعلاه للحصول على التفاصيل) طريقة لجعل واحدة من الصور على نحو سلس (استخدمت تحجيم 8x).

الآن لديك صورتان - واحدة بها زوايا متموج وآخر مع زوايا ناعمة، ولكن مع صورة ضبابية.

لديك الآن لجعل الزوايا على صورة مقرمشة شفافة ولصق الصورة بأكملها على واحد السلس. لقد استخدمت Image.comPosite (Crispy_Image، Smooth_Image، Crispy_Image) في مكتبة PIS للقيام بذلك.

هاهو!

نصائح أخرى

ما أفعله عادة هو استخدام صورة كقنعة، مثل هذا واحد على سبيل المثال:

border.png.

النص البديل http://nadiana.com/sites/default/files/pil_tutorial/porder.png.

border = Image.open('border.png')
source = border.convert('RGB')
img.paste(source, mask=border)

يمكن تغيير حجم القناع لتناسب الأبعاد التي تريدها. فقط تأكد من استخدام طريقة Image.antialias.

يمكنك الرجوع إلى الدورة التعليمية كتبت منذ فترة أكثر لمزيد من التفاصيل (قابس شاذ)

إذا كنت تريد التحكم في الحجم ومزيد من القطر، فأنت بحاجة إلى استخدام ARC أو PieceLice. لا أعرف عنك ولكن هذا المستطيل المدور الذي قمت بإنشائه بيل يبدو سلسا بما يكفي بالنسبة لي:

النص البديل http://nadiana.com/sites/default/files/round_rectoangle.png.

هنا الرمز اعتدت رسمها

ربما يجب عليك التحقق من phatch: http://photobatch.wikidot.com/Tutorials. إنه مكتوب في بيثون وكم ويمكن تطبيق زوايا المستديرة على الصور.

alt text

هنا رابط إلى الرمز المستخدم لتطبيق جولة الزوايا:http://bazaar.launchpad.net/~stani/phatch/trunk/annotate/head :/phatch/actions/round.py.

هذا يبدو سلسا بما فيه الكفاية بالنسبة لي.

سيكون لديك ل supersample.: ارسم القوس إلى صورة أكبر وتوسيع نطاقها.

على سبيل المثال حدود 16 × 16 × 16 × 16 × 16 × 16 × 16 × 16 × 16، مع 3x4x SquareSaming SquareSaming:

>>> import Image, ImageDraw
>>> im= Image.new('RGBA', (16*4, 16*4), (255, 255, 255, 0))
>>> dr= ImageDraw.ImageDraw(im)
>>> dr.pieslice((-64, -64, 64, 64), 0, 340, fill=(255,255,255,255))
>>> im= im.resize((16, 16), Image.ANTIALIAS)
>>> im.save('border-se.png')

استخدم خوارزمية دائرة Xiaolin Wu كما هو موضح في Graphics GEMS II. ملخص موجز ومثال (في PHP) هان هنا: http://create.stephan-brumme.com/antialiased-circle/

أما بالنسبة لرسم قوس (دائرة جزئية)، فيجب عليك تحديد ما إذا كانت نقطة معينة ضمن نطاق ARC الزاوي قبل التخطيط لها.

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