كيف تقرأ صورة في Java عندما يقوم Toolkit.getDefaultToolkit() بإلقاء خطأ AWTERror؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

أنا أقرأ ملفات الصور في جافا باستخدام

java.awt.Image img = Toolkit.getDefaultToolkit().createImage(filePath);

في بعض الأنظمة، لا يعمل هذا، وبدلاً من ذلك يُظهر خطأ AWTERror يشكو من sun/awt/motif/MToolkit.

وإلا كيف يمكنك إنشاء كائن java.awt.Image من ملف صورة؟

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

المحلول

قرأت الصور باستخدام ImageIO.

Image i = ImageIO.read(InputStream in);

سيقدم javadoc مزيدًا من المعلومات أيضًا.

نصائح أخرى

هناك عدة طرق ثابتة في ImageIO تسمح بقراءة الصور من مصادر مختلفة.الأكثر إثارة للاهتمام في حالتك هي:

BufferedImage read(ImageInputStream stream) 
BufferedImage read(File input)
BufferedImage read(InputStream input)

لقد تحققت من الداخل في الكود.ويستخدم فئة مجردة ImageReader، وهناك ثلاثة تطبيقات:قارئ JPEG.قارئ PNG وقارئ GIF.يبدو أن هذه الفئات وBufferedImage لا تستخدم أي طرق أصلية، لذا يجب أن تعمل دائمًا.

يبدو أن خطأ AWTERror الذي تعاني منه يرجع إلى أنك تقوم بتشغيل Java في تكوين بدون رأس، أو أن مجموعة أدوات Windows بها مشكلة من نوع ما.من الصعب القول دون النظر إلى الخطأ المحدد.سيسمح لك هذا الحل بقراءة الصورة (على الأرجح)، ولكن اعتمادًا على ما تريد فعله بها، قد يتم طرح الخطأ AWTERror لاحقًا أثناء محاولتك عرضه.

في بعض الأنظمة، قد تساعد إضافة "-Djava.awt.headless=true" كمعلمة Java.

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