هناك مجموعة من السيناريوهات التي يتم فيها تحرير الصور ومعالجتها برمجيًا. في تحرير الصور ، يعد دمج الصور ميزة مهمة تُستخدم لدمج صورتين أو أكثر ، على سبيل المثال ، لإنشاء صورة مجمعة. في هذه المقالة ، ستتعلم كيفية دمج صور متعددة في صورة واحدة في Java. سنشرح بوضوح كيفية دمج الصور أفقيًا وعموديًا.
Java API لدمج الصور - تنزيل مجاني
Aspose.Imaging for Java هي واجهة برمجة تطبيقات قوية لمعالجة الصور تتيح لك العمل مع مجموعة كبيرة من تنسيقات الصور. يوفر مجموعة متنوعة من الميزات المطلوبة لتحرير الصور. سنستخدم واجهة برمجة التطبيقات هذه لدمج صورنا في منشور المدونة هذا. يمكنك إما تنزيل API أو تثبيته باستخدام تكوينات Maven التالية.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-imaging</artifactId>
<version>22.7</version>
</dependency>
دمج عدة صور في جافا
يمكنك دمج الصور بإحدى الطريقتين: رأسيًا وأفقيًا. في الدمج الرأسي ، يتم دمج الصور واحدة تلو الأخرى في اتجاه رأسي. بينما ، في الدمج الأفقي ، يتم إلحاق الصور ببعضها البعض في الاتجاه الأفقي. لذلك دعونا نرى كيفية دمج الصور في كلا الاتجاهين.
دمج الصور أفقيا في جافا
فيما يلي خطوات دمج الصور أفقيًا باستخدام Java.
- أولاً ، حدد مسارات الصور في مصفوفة سلسلة.
- احسب ارتفاع وعرض الصورة الناتجة.
- قم بإنشاء كائن من فئة JpegOptions وضبط الخيارات المطلوبة.
- أنشئ كائنًا من فئة JpegImage وقم بتهيئته باستخدام كائن JpegOptions وارتفاع وعرض الصورة الناتجة.
- قم بعمل تكرار لقائمة الصور وقم بتحميل كل صورة باستخدام فئة RasterImage.
- أنشئ مستطيل لكل صورة وأضفها إلى الصورة الناتجة باستخدام طريقة JpegImage.saveArgb32Pixels().
- قم بزيادة عرض المخيط في كل تكرار.
- بمجرد الانتهاء من ذلك ، احفظ الصورة الناتجة باستخدام طريقة JpegImage.save(string).
يوضح نموذج التعليمات البرمجية التالي كيفية دمج الصور أفقيًا في Java.
// قائمة الصور
String[] imagePaths = { "image.jpg", "image.jpg" };
// مسار صورة الإخراج
String outputPath = "output-horizontal.jpg";
String tempFilePath = "temp.jpg";
// الحصول على حجم الصورة الناتج
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
Size size = image.getSize();
newWidth += size.getWidth();
newHeight = Math.max(newHeight, size.getHeight());
}
}
// دمج الصور في واحدة جديدة
try (JpegOptions options = new JpegOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
options.setQuality(100);
// خلق الصورة الناتجة
try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
int stitchedWidth = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedWidth += image.getWidth();
}
}
// حفظ الصورة الناتجة
newImage.save(outputPath);
}
}
تُظهر الصورة التالية ناتج دمج صورتين متشابهتين أفقيًا.
دمج الصور عموديًا في Java
لدمج الصور عموديًا ، ما عليك سوى تبديل أدوار خصائص الطول والعرض. سيكون باقي الكود هو نفسه. يوضح نموذج التعليمات البرمجية التالي كيفية دمج صور متعددة عموديًا في Java.
// قائمة الصور
String[] imagePaths = { "image.jpg", "image.jpg" };
// مسار الصورة الناتجة
String outputPath = "output-vertical.jpg";
// الحصول على حجم الصورة الناتج
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Size size = image.getSize();
newWidth = Math.max(newWidth, size.getWidth());
newHeight += size.getHeight();
}
}
// دمج الصور في واحدة جديدة
try (JpegOptions options = new JpegOptions()) {
options.setSource(new StreamSource()); // empty
options.setQuality(100);
// خلق الصورة الناتجة
try (JpegImage newImage = (JpegImage) Image.create(options, newWidth, newHeight)) {
int stitchedHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(0, stitchedHeight, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedHeight += image.getHeight();
}
}
// حفظ الصورة الناتجة
newImage.save(outputPath);
}
}
تُظهر الصورة التالية ناتج دمج صورتين متشابهتين عموديًا.
دمج صور PNG في جافا
في الأقسام السابقة ، أوضحنا كيفية دمج الصور بتنسيق JPG. ومع ذلك ، قد تحتاج إلى دمج الصور بتنسيق PNG أيضًا. لدمج صور PNG ، ما عليك سوى استبدال فئات JpegImage و JpegOptions بفئات PngImage و PngOptions على التوالي وستظل بقية الكود كما هي.
يوضح نموذج التعليمات البرمجية التالي كيفية دمج صور متعددة بتنسيق PNG في Java.
// قائمة الصور
String[] imagePaths = { "image.png", "image.png" };
// مسار صورة الإخراج
String outputPath = "output-horizontal.png";
String tempFilePath = "temp.png";
// الحصول على حجم الصورة الناتج
int newWidth = 0;
int newHeight = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (com.aspose.imaging.RasterImage) com.aspose.imaging.Image.load(imagePath)) {
Size size = image.getSize();
newWidth += size.getWidth();
newHeight = Math.max(newHeight, size.getHeight());
}
}
// دمج الصور في واحدة جديدة
try (PngOptions options = new PngOptions()) {
Source tempFileSource = new FileCreateSource(tempFilePath, true);
options.setSource(tempFileSource);
// خلق الصورة الناتجة
try (PngImage newImage = (PngImage) Image.create(options, newWidth, newHeight)) {
int stitchedWidth = 0;
for (String imagePath : imagePaths) {
try (RasterImage image = (RasterImage) Image.load(imagePath)) {
Rectangle bounds = new Rectangle(stitchedWidth, 0, image.getWidth(), image.getHeight());
newImage.saveArgb32Pixels(bounds, image.loadArgb32Pixels(image.getBounds()));
stitchedWidth += image.getWidth();
}
}
// احفظ الصورة
newImage.save(outputPath);
}
}
Java Image Merging API - احصل على ترخيص مجاني
يمكنك الحصول على ترخيص مؤقت مجاني ودمج الصور بدون قيود تقييم.
استنتاج
في هذه المقالة ، تعلمت كيفية دمج صور متعددة في صورة واحدة باستخدام Java. أظهرت عينات كود Java كيفية دمج الصور رأسيًا وأفقيًا. بالإضافة إلى ذلك ، يمكنك استكشاف المزيد حول واجهة برمجة تطبيقات معالجة صور Java باستخدام التوثيق. يمكنك أيضًا مشاركة استفساراتك معنا عبر المنتدى.
أنظر أيضا
- تحويل الصور إلى تدرج الرمادي في C#
- أضف علامة مائية إلى الصور باستخدام C#
- ضغط صور PNG و JPEG و TIFF باستخدام C#
معلومات: يوفر Aspose تطبيق ويب Collage مجاني. باستخدام هذه الخدمة عبر الإنترنت ، يمكنك دمج JPG إلى JPG أو PNG إلى صور PNG ، وإنشاء شبكات صور ، وما إلى ذلك.