زوايا دائرية على الصور باستخدام Java وJAI
-
22-07-2019 - |
سؤال
نحن نستخدم JAI (https://jai-imageio.dev.java.net/) لتغيير حجم الصور واقتصاصها في Java.نود إنشاء زوايا مستديرة على صورنا.كيف نفعل ذلك؟
الصور هي JPG و PNG.أعتقد أنه من الأسهل القيام بذلك باستخدام ملفات JPG؟
الصورة عبارة عن PlanarImage من JAI
PlanarImage src = JAI.create(...,...);
والتي يمكن تحويلها إلى كائن java.awt.Graphics
هل قام أحد بهذا من قبل؟
المحلول
يدعم PNG قناة ألفا الشفافة، لكن JPG لا يدعمها.لذلك، بالنسبة إلى JPG، سيتعين عليك أيضًا اختيار لون لطلاء الجزء "غير المرئي" من المستطيل للزوايا المستديرة.
هناك فئة java.awt.geom.RoundRectangle2D
المتاحة للقيام بذلك:
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
RoundRectangle2D rr = new RoundRectangle2D.Float(50, 50, 200, 100, 10, 10);
g2d.draw(rr);
}
تأخذ طريقة Float() للفئة RoundRectangle2D ست وسائط:
- الأولين يمثلان موقع الزاوية اليسرى العليا.
- تمثل الوسيطتان 3 و4 عرض المستطيل الدائري وارتفاعه.
- تمثل الحيلتان الأخيرتان عرض وارتفاع القوس المرسوم في الزوايا.
لذلك، ارسم مستطيلًا مستديرًا يحتوي فقط على الصورة التي تريد أن تكون لها زوايا مستديرة، ثم قم بتراكبها أو استخدام قناع للحصول على التأثير المطلوب.
نصائح أخرى
ما الذي يمنعك من وضع كل ما تريد زوايا على الرسومات وجوه الحصول على الصورة؟ لست متأكدا حقا ما يفترض بك "زوايا مستديرة" لتبدو وكأنها، ولكن يمكنك القيام بجميع عمليات الطلاء معقولة على الرسومات الكائن.