العمل مع الصور في Kotlin: المكتبات والأدوات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع الصور في Kotlin: نظرة عامة على المكتبات وأمثلة عملية



Kotlin، كونه لغة برمجة حديثة متوافقة تمامًا مع Java، يوفر للمطورين إمكانية الوصول إلى النظام البيئي الكامل للمكتبات للعمل مع الصور. في هذه المقالة، سنستعرض الأدوات الرئيسية المتاحة في Kotlin لتحميل الصور ومعالجتها وتحويلها وحفظها. ستتعلم كيفية استخدام الإمكانيات القياسية لـ Java (AWT, Swing) والمكتبات المتخصصة لحل المهام النموذجية.



الأدوات القياسية Java AWT و Swing



الوظائف الأساسية للعمل مع الصور في Kotlin (كما في Java) توفرها الحزم java.awt و javax.imageio. الفئات الرئيسية:



  • java.awt.image.BufferedImage — يمثل صورة نقطية مع إمكانية الوصول إلى البكسلات.
  • java.awt.Graphics2D — يوفر طرقًا للرسم (خطوط، أشكال، نصوص) على الصورة.
  • javax.imageio.ImageIO — طرق ثابتة لقراءة وكتابة الصور بتنسيقات مختلفة (PNG, JPEG, BMP, GIF).
  • java.awt.Color — العمل مع الألوان.
  • java.awt.image.RescaleOp, java.awt.image.ConvolveOp — مرشحات لتغيير السطوع والتباين والتشويش.


مثال 1: تحميل الصورة وتغيير حجمها وحفظها



import java.awt.image.BufferedImageimport java.awt.Graphics2Dimport java.awt.RenderingHintsimport java.io.Fileimport javax.imageio.ImageIO

fun resizeImage(inputPath: String, outputPath: String, targetWidth: Int, targetHeight: Int) { // تحميل الصورة الأصلية val originalImage: BufferedImage = ImageIO.read(File(inputPath))

// إنشاء صورة جديدة بالحجم المطلوب val resizedImage = BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB) val graphics: Graphics2D = resizedImage.createGraphics()

// ضبط جودة إعادة التشكيل graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR) graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY) graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)

// رسم الصورة المقاسة graphics.drawImage(originalImage, 0, 0, targetWidth, targetHeight, null) graphics.dispose()

// حفظ النتيجة ImageIO.write(resizedImage, "jpg", File(outputPath)) println("تم حفظ الصورة: $outputPath")}

// مثال على الاستدعاءfun main() { resizeImage("input.jpg", "output_resized.jpg", 800, 600)}


مكتبة Thumbnailator



Thumbnailator هي مكتبة شائعة لـ Java/Kotlin تبسط بشكل كبير إنشاء الصور المصغرة وتغيير أحجام الصور. ميزتها الرئيسية هي واجهة fluent API البسيطة.



الإضافة (Gradle):

implementation("net.coobird:thumbnailator:0.4.20")


مثال 2: إنشاء صورة مصغرة باستخدام Thumbnailator



import net.coobird.thumbnailator.Thumbnailsimport java.io.File

fun createThumbnail(inputPath: String, outputPath: String, size: Int) { Thumbnails.of(File(inputPath)) .size(size, size) // صورة مصغرة مربعة .keepAspectRatio(true) // الحفاظ على النسب .outputFormat("png") .toFile(File(outputPath)) println("تم إنشاء الصورة المصغرة: $outputPath")}

fun main() { createThumbnail("photo.jpg", "thumb.png", 150)}


تدعم المكتبة أيضًا الاقتصاص والتدوير وإضافة العلامات المائية والعمل مع التدفقات.



مكتبة OpenCV لـ Kotlin



لمعالجة الصور الحاسوبية المتقدمة (التعرف على الوجوه، التصفية، تحليل الحواف) يتم استخدام

توصيات