Java2DforQA

Часто в процессе автоматизированного тестирования разных web возникает необходимость осуществить какие-либо действия над файлами изображений (аватарку залить и тд). В большинстве случаев для таких целей автоматизаторы таскают вместе с тестами директорию с тестовыми файлами. Но есть более удобный способ: генерация картинок налету, во время выполнения тестов! И помочь в этом может класс ImageIO из пакета javax!
Вот несколько примеров:

  • Для начала посмотрим список всех поддерживаемых форматов:

  1. String[] writerNames = ImageIO.getWriterFormatNames();
  2. Arrays.asList(writerNames).forEach(p -> System.out.println(p));

  • Создадим файл test.jpg размером 100×100 в директории с временными файлами и нарисованной на чёрном фоне белыми буквами надписью «TEST»:

  1. BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
  2. Graphics g = image.getGraphics();
  3. g.drawString("TEST", 20, 30);
  4. try
  5. {
  6. File jpgFile = File.createTempFile("test", ".jpg");
  7. ImageIO.write(image, "jpg", jpgFile);
  8. }
  9. catch (IOException e)
  10. {
  11. e.printStackTrace();
  12. }

  • Скачаем файд по URL и сохраним:

  1. try
  2. {
  3. URL url = new URL("http://webdiscover.ru/uploads/images/2012-08/308_134443701217.jpg");
  4. image = ImageIO.read(url);
  5. ImageIO.write(image, "jpg", new File("C:\\out.jpg"));
  6. }
  7. catch (IOException e)
  8. {
  9. e.printStackTrace();
  10. }

Кстати, обратите внимание на класс Graphics из 2-го примера. С помощью него можно рисовать на картинке всё, что угодно. Если вас заинтересовало рисование 2d в java, то почитать про это можно ТУТ.

Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс