Skip to content

netology-code/java-diplom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π² Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ

Вас пригласили ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ прилоТСния, ΡƒΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΏΠΎ URL ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ изобраТСния Π² Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Π³Ρ€Π°Ρ„ΠΈΠΊΡƒ (Ρ‚. Π΅. Π² тСкст ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² совокупности выглядят ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π½Π° Π½Ρ‘ΠΌ β€” это тСкст ΠΈΠ· ΠΌΠ΅Π»ΠΊΠΈΡ… символов:

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π§Π°ΡΡ‚ΡŒ прилоТСния ΡƒΠΆΠ΅ написана. Π’Π°ΡˆΠ° Π·Π°Π΄Π°Ρ‡Π° β€” Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π² соотвСтствии с трСбованиями. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ идСю, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² мСню File -> New -> Project from Version Control. Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π² ΠΏΠΎΠ»Π΅ URL Π²Π²Π΅Π΄ΠΈΡ‚Π΅ https://github.com/netology-code/java-diplom, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅, ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Clone.

Если послС наТатия выскочила ошибка ΠΎΠ± отсутствии Π³ΠΈΡ‚Π° Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, установитС Π³ΠΈΡ‚ ΠΏΠΎ этой инструкции ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ снова.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ идСя скачаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ для Π½Π΅Π³ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π° вСрсия Java. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ File -> Project structure ΠΈ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊ. ВСрсия Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ 11-ΠΉ.

ПослС ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ класс Main ΠΈ запуститС ΠΌΠ΅Ρ‚ΠΎΠ΄ main. Запуск Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ошибкой:

Exception in thread "main" java.lang.IllegalArgumentException: Π‘Π΅Ρ€Π²Π΅Ρ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² конструктор ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€, Π° Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ null.
	at ru.netology.graphics.server.GServer.<init>(GServer.java:24)
	at ru.netology.graphics.Main.main(Main.java:13)

Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ настроСн Π²Π΅Ρ€Π½ΠΎ. Если Π½Π΅Ρ‚, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ своСму Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ ΠΏΠΎ курсовой, ΠΎΠ½ подскаТСт с настройкой.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ java-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с нСсколькими Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌΠΈ Π²Π°ΠΌ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, assets), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ. Нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ .java-Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ:

Класс / Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Для Ρ‡Π΅Π³ΠΎ?
BadImageSizeException Класс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ
TextColorSchema Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ схСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ
TextGraphicsConverter Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ
GServer Π“ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ класс сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€; Π²Π°ΠΌ Ρ‚ΡƒΠ΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ
Main Запуск прилоТСния. Π’ Π½Ρ‘ΠΌ запускаСтся сСрвСр, Ρ‚Π°ΠΊΠΆΠ΅ Π² Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π² тСкстовыС Ρ„Π°ΠΉΠ»Ρ‹ Π±Π΅Π· сСрвСра

ВрСбования ΠΊ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΠΆΠ΅ написан класс сСрвСра, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€. Π’. ΠΊ. ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π΅Ρ‰Ρ‘ Π½Π΅ написан, Π±Ρ‹Π» создан ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс TextGraphicsConverter, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сСрвСр ΠΆΠ΄Ρ‘Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² Main:

        TextGraphicsConverter converter = null; // Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вашСго класса ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°

        GServer server = new GServer(converter); // Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сСрвСра
        server.start(); // ЗапускаСм

ВсС трСбования ΠΊ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ описаны Π² интСрфСйсС. Π§ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ. Π‘Π°ΠΌΡ‹ΠΉ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” это ΠΌΠ΅Ρ‚ΠΎΠ΄ convert, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ URL Π² Π²ΠΈΠ΄Π΅ тСкста, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«https://raw.githubusercontent.com/netology-code/java-diplom/main/pics/simple-test.pngΒ», Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°Ρ‡Π°Π΅Ρ‚ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, послС Ρ‡Π΅Π³ΠΎ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° String, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ тСкстовой Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π² Java String β€” это тСкст ΠΈ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ всСго ΠΎΠ΄Π½Π° строчка тСкста. Π’. Π΅. Π² ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° String ΠΌΠΎΠΆΠ½ΠΎ занСсти многострочный тСкст, Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ строк (ΠΏΠΎ сути Enter) Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΊΠ°ΠΊ \n. Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ вас Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строчки тСкстового изобраТСния Π±ΡƒΠ΄Π΅Ρ‚ символ пСрСноса строки (запись Π² ΠΊΠΎΠ΄Π΅ β€” \n).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² консоль:

        String url = "https://raw.githubusercontent.com/netology-code/java-diplom/main/pics/simple-test.png";
        String imgTxt = converter.convert(url);
        System.out.println(imgTxt);

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π³Π΄Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‘ΠΌΠ½Ρ‹Π΅ участки Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΆΠΈΡ€Π½Ρ‹Π΅ символы, Π° свСтлыС Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ символы:

Π’Π°ΠΊΠΆΠ΅ интСрфСйс ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅ΠΌΡƒ настройки ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ:

  • максимально допустимоС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон (ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты). Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ, Ρ‚ΠΎ любоС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ допустимо;
  • максимально Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ высоту ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ, Ρ‚ΠΎ любая высота допустима;
  • максимально Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ, Ρ‚ΠΎ любая ΡˆΠΈΡ€ΠΈΠ½Π° допустима;
  • Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ схСму β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ стСпСни Π±Π΅Π»ΠΎΠ³ΠΎ (числа ΠΎΡ‚ 0 Π΄ΠΎ 255) Π² символ. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ написанного Π²Π°ΠΌΠΈ класса ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΡˆΠΈΡ€ΠΈΠ½Π° большС Π΄Π»ΠΈΠ½Ρ‹ Π² Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°, Ρ‚. ΠΊ. максимальноС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон Π΅ΠΌΡƒ выставлСно Π² 2:

        TextGraphicsConverter converter = ...; // Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ‚ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ вашСго класса ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°
	converter.setMaxRatio(2);  // выставляСт максимально допустимоС ΡΠΎΠΎΡ‚Ρ€Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ
	String imgTxt = converter.convert(...); // для слишком ΡˆΠΈΡ€ΠΎΠΊΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ BadImageSizeException.

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹: ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ сСрвСру, ΠΎΠ½ выставит Π΅ΠΌΡƒ свои ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡŽ:

image

ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± этих ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… числах нСльзя. Π’Π°Ρˆ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ настройками, описанными Π²Ρ‹ΡˆΠ΅. Π’. Π΅. Ссли Π² сСрвСрС ΠΏΠΎΠΌΠ΅Π½ΡΡŽΡ‚ настройки ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ, ваш ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΎΠ²Ρ‹ΠΌΠΈ значСниями.

ΠžΠ±Ρ‰Π°Ρ схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° convert Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ дСйствий (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ описаны Π½ΠΈΠΆΠ΅):

  1. Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΠΎ URL.
  2. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ максимально допустимоС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон (ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты); Ссли ΠΎΠ½ΠΎ слишком большоС, Ρ‚ΠΎ конвСртация Π½Π΅ дСлаСтся ΠΈ выбрасываСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
  3. ΠŸΡ€ΠΈ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль Π½Π° символ: Ρ‡Π΅ΠΌ пиксСль Ρ‚Π΅ΠΌΠ½Π΅Π΅, Ρ‚Π΅ΠΌ ΠΆΠΈΡ€Π½Π΅Π΅ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ подставим. ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ ΠΌΠΎΠ³Π»ΠΈ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, ΠΏΡ€ΠΈ этом Ссли исходная ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° большС, Ρ‚ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€, соблюдая ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ.
  4. ΠŸΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ‡Ρ‘Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ смотрСли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°, Π° Π½Π΅ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π»ΠΈ для красного ΠΎΠ΄Π½ΠΈ символы, для Π·Π΅Π»Ρ‘Π½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈ Ρ‚. ΠΏ.
  5. ΠŸΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС пиксСли изобраТСния, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ Ρƒ Π½ΠΈΡ… ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π±Π΅Π»ΠΎΠ³ΠΎ (число ΠΎΡ‚ 0 Π΄ΠΎ 255, Π³Π΄Π΅ 0 β€” это Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ, Π° 255 β€” это свСтлый). Π’ зависимости ΠΎΡ‚ этого числа Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ символ ΠΈΠ· Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π°.
  6. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ всС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ символы Π² Π΅Π΄ΠΈΠ½ΡƒΡŽ строку, ΠΎΡ‚Π΄Π°Ρ‘ΠΌ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ.

ΠšΠΎΡΡ‚ΡΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° convert:

    @Override
    public String convert(String url) throws IOException, BadImageSizeException {
        // Π’ΠΎΡ‚ Ρ‚Π°ΠΊ просто ΠΌΡ‹ скачаСм ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° :)
        BufferedImage img = ImageIO.read(new URL(url));

        // Если ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ попросили ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° максимально допустимоС
        // ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон изобраТСния, Ρ‚ΠΎ Π²Π°ΠΌ здСсь Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эту ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ,
        // ΠΈ, Ссли ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ BadImageSizeException.
        // Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ img.getWidth(), высоту - img.getHeight()

        // Если ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Ρƒ выставили максимально допустимыС ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ/ΠΈΠ»ΠΈ высоту,
        // Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎ Π½ΠΈΠΌ ΠΈ ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ высотС ΠΈ ΡˆΠΈΡ€ΠΈΠ½Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ высоту
        // ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρƒ.
        // БоблюдСниС ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΉ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту
        // Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство Ρ€Π°Π·.
        // ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: макс. допустимыС 100x100, Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 500x200. Новый Ρ€Π°Π·ΠΌΠ΅Ρ€
        // Π±ΡƒΠ΄Π΅Ρ‚ 100x40 (Π² 5 Ρ€Π°Π· мСньшС).
        // ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: макс. допустимыС 100x30, Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 150x15. Новый Ρ€Π°Π·ΠΌΠ΅Ρ€
        // Π±ΡƒΠ΄Π΅Ρ‚ 100x10 (Π² 1.5 Ρ€Π°Π·Π° мСньшС).
        // ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌΠΈ дСйствиями ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.
        // НС получаСтся? БпроситС вашСго руководитСля ΠΏΠΎ курсовой, ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ.
        int newWidth = ???;
        int newHeight = ???;

        // Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ свои Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π½Π° Π½ΠΎΠ²Ρ‹Π΅.
        // ПослСдний ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ просим ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΏΠ»Π°Π²Π½ΠΎ ΡΡƒΠ·ΠΈΡ‚ΡŒΡΡ
        // Π½Π° Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ссылку Π½Π° Π½ΠΎΠ²ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, которая
        // прСдставляСт собой ΡΡƒΠΆΠ΅Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ€ΡƒΡŽ.
        Image scaledImage = img.getScaledInstance(newWidth, newHeight, BufferedImage.SCALE_SMOOTH);

        // Π’Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм Π΅Ρ‘ Ρ‡Ρ‘Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠΉ. Для этого поступим Ρ‚Π°ΠΊ:
        // Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½ΡƒΠΆΠ½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², Π·Π°Ρ€Π°Π½Π΅Π΅ ΡƒΠΊΠ°Π·Π°Π² послСдним
        // ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ‡Ρ‘Ρ€Π½ΠΎ-Π±Π΅Π»ΡƒΡŽ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ:
        BufferedImage bwImg = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_BYTE_GRAY);
        // ΠŸΠΎΠΏΡ€ΠΎΡΠΈΠΌ Ρƒ этой ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ инструмСнт для рисования Π½Π° Π½Π΅ΠΉ:
        Graphics2D graphics = bwImg.createGraphics();
        // А этому инструмСнту скаТСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ скопировал содСрТимоС ΠΈΠ· нашСй суТСнной ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ:
        graphics.drawImage(scaledImage, 0, 0, null);

        // Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² bwImg Ρƒ нас Π»Π΅ΠΆΠΈΡ‚ Ρ‡Ρ‘Ρ€Π½ΠΎ-бСлая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².
        // Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этапов, Π² любом ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ для
        // вас ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅ сохранив ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π·:
        // ImageIO.write(imageObject, "png", new File("out.png"));
        // ПослС Π²Ρ‹Π·ΠΎΠ²Π° этой инструкции Ρƒ вас Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ появится Ρ„Π°ΠΉΠ» ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ out.png

        // Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ пройдёмся ΠΏΠΎ пиксСлям нашСго изобраТСния.
        // Если для рисования ΠΌΡ‹ просили Ρƒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ .createGraphics(),
        // Ρ‚ΠΎ для ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΠΎ пиксСлям Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ этот инструмСнт:
        WritableRaster bwRaster = bwImg.getRaster();

        // Он Ρ…ΠΎΡ€ΠΎΡˆ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ пиксСль Π½Π° Π½ΡƒΠΆΠ½Ρ‹Ρ…
        // Π½Π°ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°Ρ…, ΡƒΠΊΠ°Π·Π°Π² Π½ΠΎΠΌΠ΅Ρ€ столбца (w) ΠΈ строки (h)
        // int color = bwRaster.getPixel(w, h, new int[3])[0];
        // Выглядит странно? БогласСн. Π‘Π°ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пиксСль β€” это 
        // массив ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΈΠ½Ρ‚ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ красного, Π·Π΅Π»Ρ‘Π½ΠΎΠ³ΠΎ ΠΈ синСго.
        // Но Ρƒ нашСй Ρ‡Ρ‘Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² Π½Π΅Ρ‚, ΠΈ нас интСрСсуСт
        // Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² массивС. Π•Ρ‰Ρ‘ ΠΌΡ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ ΠΈΠ½Ρ‚ΠΎΠ²Ρ‹ΠΉ массив Π½Π° Ρ‚Ρ€ΠΈ ячСйки.
        // Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ сам ΠΈ просит
        // вас ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π° сам ΠΌΠ΅Ρ‚ΠΎΠ΄ лишь Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ Π΅Π³ΠΎ ΠΈ Π²Π΅Ρ€Π½Ρ‘Ρ‚.
        // ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивы ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ
        // массив ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½
        // ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ массив Π² ΠΌΠ΅Ρ‚ΠΎΠ΄, ускорив Ρ‚Π΅ΠΌ самым ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

        // Π’Π°ΠΌ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ±Π΅ΠΆΠ°Ρ‚ΡŒΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ всСм столбцам (ΡˆΠΈΡ€ΠΈΠ½Π°)
        // ΠΈ строкам (высота) изобраТСния, Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
        // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ Π±Π΅Π»ΠΎΠ³ΠΎ пиксСля (int color Π²Ρ‹ΡˆΠ΅) ΠΈ ΠΏΠΎ Π½Π΅ΠΉ
        // ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ символ c. Π›ΠΎΠ³ΠΈΠΊΠΎΠΉ прСвращСния Ρ†Π²Π΅Ρ‚Π°
        // Π² символ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим Π½ΠΈΠΆΠ΅
        for ??? {
          for ??? {
            int color = bwRaster.getPixel(w, h, new int[3])[0];
            char c = schema.convert(color);
            ??? //Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ символ c, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘ Π½Π° вашС усмотрСниС
          }
        }

        // ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всС символы Π² ΠΎΠ΄ΠΈΠ½ большой тСкст.
        // Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ слишком ΡƒΠ·ΠΊΠΈΠΌ, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ
        // ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π² Π΄Π²Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ символа, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ…
        // ΠΎΡ‚ схСмы.

        return ???; // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ собранный тСкст.
    }

ВрСбования ΠΊ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ схСмС

ΠœΡ‹ написали интСрфСйс ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сам ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π» ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Ρ†Π²Π΅Ρ‚Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ символ, Π½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ занимался Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйса:

public interface TextColorSchema {
    char convert(int color);
}

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π’ΠΎΡ‚ список символов ΠΎΡ‚ самых Ρ‚Ρ‘ΠΌΠ½Ρ‹Ρ… ΠΊ самым свСтлым: 'β–‡', '●', 'β—‰', '◍', 'β—Ž', 'β—‹', 'β˜‰', 'β—Œ', '-'. Если Π²Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π½Π° Windows, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ список ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ стандартных символов, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΊΡ€ΠΈΠ²ΠΎ: '#', '$', '@', '%', '*', '+', '-', '''. Π’ зависимости ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния интСнсивности Π±Π΅Π»ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ символ. НапримСр, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ 0, Ρ‚ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ 'β–‡'; Ссли ΠΊ 255, Ρ‚ΠΎ '-'. Если Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС, Ρ‚ΠΎ ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ Ρ‚ΠΎΠΆΠ΅ Π³Π΄Π΅-Ρ‚ΠΎ посСрСдинС.

ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это условными ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½Ρƒ строчку. Если Ρƒ вас совсСм Π½Π΅ получаСтся ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, спроситС вашСго руководитСля ΠΏΠΎ курсовой.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ Ρƒ вас Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ класс, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ этот интСрфСйс. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° сСттСром Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΈΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этого интСрфСйса, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваш класс ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ВсС ваши Π½ΠΎΠ²Ρ‹Π΅ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ru.netology.graphics.image, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы, ΠΊΡ€ΠΎΠΌΠ΅ класса Main, ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя.

ВСстированиС, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚Π΅ классы, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ класс Main ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ вашСго класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ сСрвСру. Π’Π΅ΠΏΠ΅Ρ€ΡŒ послС старта ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сСрвСр Π½Π° строкС server.start(). Π‘Π΅Ρ€Π²Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎ происходящСм Π² консоль. Если Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ, страница прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ доступна ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ для вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° адрСсу http://localhost:8888/ .

Для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ достаточно Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΡΠΌΡƒΡŽ ссылку Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ Convert. Если конвСртация Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ тСкстовой Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ. Π•Π³ΠΎ сСрвСр ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΡ‚ вашСго ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°. Если ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π½Π΅ смоТСт ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π² консоли Π±ΡƒΠ΄Π΅Ρ‚ стСк-трСйс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ сСрвСр ΠΏΡ€ΠΈ этом Π½Π΅ ΡƒΠΏΠ°Π΄Ρ‘Ρ‚, Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. На Π²Π΅Π±-страницС Π±ΡƒΠ΄Π΅Ρ‚ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ конвСртация Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ.

Для тСстирования ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ URL ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

  • ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ малСнькоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ: https://raw.githubusercontent.com/netology-code/java-diplom/main/pics/simple-test.png
  • Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ для дСмонстрации: https://i.ibb.co/6DYM05G/edu0.jpg

Π’ΠΎ врСмя поиска ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π² Main Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ, Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΡƒΡŽ сСрвСр, ΠΈ Ρ€Π°ΡΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ сконвСртированноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² консоль. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ:

Π‘ Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ

Π’Ρ‹ сами Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚Π΅, с Ρ‡Π΅Π³ΠΎ Π²Π°ΠΌ Π»Π΅Π³Ρ‡Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ. НиТС прСдставлСн ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²:

  1. НачнитС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ с класса Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ схСмы. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ru.netology.graphics.image класс, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс TextColorSchema.
  2. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Π² Π½Ρ‘ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Ρ†Π²Π΅Ρ‚Π° Π² символ, согласно трСбованиям ΠΊ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΠΎΠΉ схСмС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π²Ρ‹ΡˆΠ΅.
  3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ схСму. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² Main Π΅Ρ‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠŸΡ€Π°Π²Π΄Π° Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π° Ρ†Π²Π΅Ρ‚Π°Ρ… Π±Π»ΠΈΠΆΠ΅ ΠΊ Π±Π΅Π»ΠΎΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΠ»Π΅Π΅ свСтлыС символы ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚? Если это Π½Π΅ Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ.
  4. ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚Π΅ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ru.netology.graphics.image класс, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс TextGraphicsConverter.
  5. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ просто ΠΌΠ΅Ρ‚ΠΎΠ΄ convert, Π½Π΅ обращая внимания Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ трСбования: ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Π½Π° макс. Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ Ρ‚. Π΄.
  6. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ сСрвСру Π² main ΠΈΠ»ΠΈ протСстируйтС Π² тСкстовом Ρ€Π΅ΠΆΠΈΠΌΠ΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ описано Π²Ρ‹ΡˆΠ΅. Если Π²Ρ‹ сразу Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Ρ‚ΠΎ тСстируйтС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ….
  7. Если конвСртация Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, приступайтС ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ настроСк ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° β€” Π»ΠΎΠ³ΠΈΠΊΠΈ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π½Π° максимальноС ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ сторон, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ ΠΈ Ρ‚. Π΄. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° Ρ€Π°Π·, добиваясь работспособности вашСго ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π° послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΎΠ»Π½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ трудностСй ΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠΎΠΌ.
  8. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ условиС β€” всС Π»ΠΈ трСбования Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹? ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Ρ… β€” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ? Если всё Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Ρ€Π°Π·Π΄Π΅Π»ΠΎΠΌ «Как ΡΠ΄Π°Π²Π°Ρ‚ΡŒΒ» ΠΈ приступайтС ΠΊ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

Как ΡΠ΄Π°Π²Π°Ρ‚ΡŒ

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ класс Main Π² исходноС состояниС, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ созданиС ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π΅Ρ€Π°, Ρ‚. Π΅. ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Ρ€Π΅ΠΆΠΈΠΌ с запуском сСрвСра. ВсС ваши Π½ΠΎΠ²Ρ‹Π΅ классы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ru.netology.graphics.image, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы, ΠΊΡ€ΠΎΠΌΠ΅ класса Main, ΠΌΠ΅Π½ΡΡ‚ΡŒ нСльзя.

ΠŸΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Main.java ΠΈ всС созданныС Π²Π°ΠΌΠΈ .java-Ρ„Π°ΠΉΠ»Ρ‹. Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ стоит ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ Π°Ρ€Ρ…ΠΈΠ², ΡΠΊΠΈΠ΄Ρ‹Π²Π°Ρ‚ΡŒ ссылку Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Ρ€Π΅ΠΏΠ»ΠΈΡ‚ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •