
التسميات التوضيحية في الصور تسلط الضوء على التفاصيل الرئيسية التي تجعل الصور أكثر معلوماتية وجاذبية. سواء كنت تصف جزءاً من مخطط أو تسلط الضوء على أجزاء مهمة من رسم بياني، فإن إضافة التسميات التوضيحية يمكن أن تعزز الوضوح. هذا يتيح لك لفت الانتباه إلى نقاط محددة في الصورة بسهولة. في هذه المقالة، ستتعلم كيفية إضافة تسميات توضيحية للصور في Java. تصبح إضافة التسميات التوضيحية برمجياً أداة قوية لتعزيز وضوح الصور وأتمتتها.
تغطي هذه المقالة المواضيع التالية:
Java API لإضافة التسميات التوضيحية
Aspose.Drawing for Java هي مكتبة قوية لإضافة التسميات التوضيحية للصور برمجياً. تتيح لك إنشاء وتحرير الرسومات بسهولة. يتيح لك Aspose.Drawing for Java رسم الأشكال والخطوط والنصوص مباشرة على الصور. دعونا نستعرض كيفية استخدام هذه المكتبة لإضافة التسميات التوضيحية في تطبيقات Java الخاصة بك بكفاءة.
يرجى تنزيل JAR الخاص بـ API أو إضافة التكوين التالي pom.xml في تطبيق Java المعتمد على Maven.
<repositories>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-drawing</artifactId>
<version>24.4</version>
</dependency>
</dependencies>
إضافة التسميات التوضيحية للصور في Java
يرجى اتباع هذه الخطوات البسيطة لإضافة التسميات التوضيحية للصور برمجياً:
- تحميل الصورة باستخدام طريقة Image.fromFile().
- إنشاء كائن Graphics باستخدام طريقة fromImage().
- تهيئة كائن فئة Pen باللون والحجم المطلوبين لرسم التسميات التوضيحية.
- تحديد الموقع الخاص بعنصر التسميات التوضيحية باللون والحجم المحددين.
- استخدام طريقة drawString() لكتابة النص.
- حفظ الصورة الناتجة باستخدام طريقة save().
يوضح نموذج الكود أدناه كيفية إضافة التسميات التوضيحية للصور في Java.
import com.aspose.drawing.Color; | |
import com.aspose.drawing.Font; | |
import com.aspose.drawing.FontStyle; | |
import com.aspose.drawing.Graphics; | |
import com.aspose.drawing.GraphicsUnit; | |
import com.aspose.drawing.Image; | |
import com.aspose.drawing.Pen; | |
import com.aspose.drawing.PointF; | |
import com.aspose.drawing.RectangleF; | |
import com.aspose.drawing.SizeF; | |
import com.aspose.drawing.SolidBrush; | |
import com.aspose.drawing.text.TextRenderingHint; |
public static void main(String[] args) { | |
// Load an image | |
Image image = Image.fromFile("gears.png"); | |
Graphics graphics = Graphics.fromImage(image); | |
graphics.setTextRenderingHint(TextRenderingHint.AntiAliasGridFit); | |
graphics.setPageUnit(GraphicsUnit.Pixel); | |
drawCallOut(graphics, new PointF(107, 55), new PointF(179, 5), 74, "mm"); | |
drawCallOut(graphics, new PointF(111, 146), new PointF(29, 180), 28, "mm"); | |
image.save("gears_callout.jpg"); | |
} | |
private static void drawCallOut(Graphics graphic, PointF startAnchor, PointF endAnchor, int value, String unit) | |
{ | |
Pen pen = new Pen(Color.getRed(), 1); | |
Font font = new Font("Arial", 10, FontStyle.Bold); | |
String outputValue = value + " " + unit; | |
SizeF textSize = graphic.measureString(outputValue, font); | |
int diameterSymbolSize = 12; | |
int spaceSize = 3; | |
textSize.setWidth(textSize.getWidth() + diameterSymbolSize + spaceSize); | |
float callOutMiddleX = endAnchor.getX() > startAnchor.getX() ? endAnchor.getX() - textSize.getWidth() : endAnchor.getX() + textSize.getWidth(); | |
float callOutMiddleY = endAnchor.getY() > startAnchor.getY() ? endAnchor.getY() - textSize.getHeight() : endAnchor.getY() + textSize.getHeight(); | |
graphic.drawLine(pen, startAnchor.getX(), startAnchor.getY(), callOutMiddleX, callOutMiddleY); | |
float textAnchorX = Math.min(callOutMiddleX, endAnchor.getX()); | |
float textAnchorY = callOutMiddleY; | |
graphic.drawLine(pen, callOutMiddleX, callOutMiddleY, | |
textAnchorX == callOutMiddleX ? textAnchorX + textSize.getWidth() : textAnchorX, | |
callOutMiddleY); | |
graphic.drawEllipse(pen, new RectangleF((int)textAnchorX + spaceSize, | |
(int)(textAnchorY - textSize.getHeight()) + spaceSize, 10, 10)); | |
graphic.drawLine(pen, (int)textAnchorX + 1, (int)textAnchorY - 1, | |
(int)textAnchorX + diameterSymbolSize + 2, | |
(int)textAnchorY - diameterSymbolSize - 2); | |
SolidBrush brush = new SolidBrush(Color.getBlue()); | |
graphic.drawString(outputValue, font, brush, (int)textAnchorX + diameterSymbolSize + spaceSize, | |
(int)(textAnchorY - textSize.getHeight())); | |
} |

إضافة التسميات التوضيحية للصور في Java
تسميات الصور التوضيحية – موارد مجانية
اكتشف مختلف ميزات المكتبة إلى جانب إضافة التسميات التوضيحية للصور باستخدام الموارد أدناه:
احصل على رخصة مؤقتة مجانية لتجربة القوة الكاملة لـ Aspose.Drawing for Java بدون قيود. هذا يسمح لك بتقييم ميزات المكتبة وقدراتها قبل اتخاذ قرار الشراء.
الخاتمة
في هذه المقالة، تعلمنا كيفية إضافة التسميات التوضيحية للصور في Java. إضافة التسميات التوضيحية للصور يعزز الصور الخاصة بك بتسليط الضوء على التفاصيل الرئيسية. اتبع الخطوات الموضحة واستخدم مثال الكود المقدم لرسم الانتباه بسهولة إلى العناصر الرئيسية في الصور الخاصة بك. في حالة وجود أي غموض، لا تتردد في الاتصال بنا على منتدى الدعم المجاني.