ΠΠ°Ρ ΠΏΡΠΈΠ³Π»Π°ΡΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎ 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.ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ: ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΎΠ½ Π²ΡΡΡΠ°Π²ΠΈΡ Π΅ΠΌΡ ΡΠ²ΠΎΠΈ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ:
ΠΡΠΈ ΡΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΠ»Π°Ρ Π½Π΅Π»ΡΠ·Ρ. ΠΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π»ΡΠ±ΡΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π²ΡΡΠ΅. Π’. Π΅. Π΅ΡΠ»ΠΈ Π² ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΡ, Π²Π°Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ±ΡΠ°Ρ ΡΡ
Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° convert Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΆΠ΅):
- Π‘ΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΏΠΎ URL.
- ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ (ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ); Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ΅, ΡΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ Π½Π΅ Π΄Π΅Π»Π°Π΅ΡΡΡ ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
- ΠΡΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΌΠ΅Π½ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»: ΡΠ΅ΠΌ ΠΏΠΈΠΊΡΠ΅Π»Ρ ΡΠ΅ΠΌΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΆΠΈΡΠ½Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠΌ. ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΡΡΠ°Π²ΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠΈΠ½Ρ ΠΈ Π²ΡΡΠΎΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΅ΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅, ΡΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΠΎΠ±Π»ΡΠ΄Π°Ρ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΈ.
- ΠΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΡΡΠ½ΠΎ-Π±Π΅Π»ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΠΌΡ ΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ²Π΅ΡΠ°, Π° Π½Π΅ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π»ΠΈ Π΄Π»Ρ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ΄Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π΄Π»Ρ Π·Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈ Ρ. ΠΏ.
- ΠΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΏΡΠ°ΡΠΈΠ²Π°Ρ Ρ Π½ΠΈΡ ΡΡΠ΅ΠΏΠ΅Π½Ρ Π±Π΅Π»ΠΎΠ³ΠΎ (ΡΠΈΡΠ»ΠΎ ΠΎΡ 0 Π΄ΠΎ 255, Π³Π΄Π΅ 0 β ΡΡΠΎ ΡΡΡΠ½ΡΠΉ, Π° 255 β ΡΡΠΎ ΡΠ²Π΅ΡΠ»ΡΠΉ). Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈΠ· Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°.
- Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² Π΅Π΄ΠΈΠ½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΎΡΠ΄Π°ΡΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ.
ΠΠΎΡΡΡΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° 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 Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΠΈΡ, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΈ ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ, Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ. Π’Π°ΠΊΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ:
ΠΡ ΡΠ°ΠΌΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅, Ρ ΡΠ΅Π³ΠΎ Π²Π°ΠΌ Π»Π΅Π³ΡΠ΅ Π½Π°ΡΠ°ΡΡ. ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΊΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²:
- ΠΠ°ΡΠ½ΠΈΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ
Π΅ΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅
ru.netology.graphics.imageΠΊΠ»Π°ΡΡ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡTextColorSchema. - Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ Π² Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΡΠ²Π΅ΡΠ° Π² ΡΠΈΠΌΠ²ΠΎΠ», ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΠΊ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΡ Π΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π²ΡΡΠ΅.
- ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π²Π°ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΡΡ
Π΅ΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π²
MainΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ°Π²Π΄Π° Π»ΠΈ, ΡΡΠΎ Π½Π° ΡΠ²Π΅ΡΠ°Ρ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π±Π΅Π»ΠΎΠΌΡ Π±ΡΠ΄ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΡΠ»ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ? ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ. - ΠΡΠΈΡΡΡΠΏΠΈΡΠ΅ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ°. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅
ru.netology.graphics.imageΠΊΠ»Π°ΡΡ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡTextGraphicsConverter. - Π‘Π½Π°ΡΠ°Π»Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ convert, Π½Π΅ ΠΎΠ±ΡΠ°ΡΠ°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° ΠΌΠ°ΠΊΡ. ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ Ρ. Π΄.
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΡ Π²
mainΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠ°Π·Ρ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, ΡΠΎ ΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°Ρ . - ΠΡΠ»ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΡΠΈΡΡΡΠΏΠ°ΠΉΡΠ΅ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ° β Π»ΠΎΠ³ΠΈΠΊΠΈ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈ Ρ. Π΄. Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π° ΡΠ°Π·, Π΄ΠΎΠ±ΠΈΠ²Π°ΡΡΡ ΡΠ°Π±ΠΎΡΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ° ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΠΎΠ»Π½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠΎΠΌ.
- ΠΠ΅ΡΠ΅ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ β Π²ΡΠ΅ Π»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ? ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°Ρ β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π»ΠΈ? ΠΡΠ»ΠΈ Π²ΡΡ Ρ ΠΎΡΠΎΡΠΎ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΡΠ°Π·Π΄Π΅Π»ΠΎΠΌ Β«ΠΠ°ΠΊ ΡΠ΄Π°Π²Π°ΡΡΒ» ΠΈ ΠΏΡΠΈΡΡΡΠΏΠ°ΠΉΡΠ΅ ΠΊ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠ°Π±ΠΎΡΡ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ.
ΠΠ΅ΡΠ΅Π΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ Main Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅ΡΠ°, Ρ. Π΅. ΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅ΠΆΠΈΠΌ Ρ Π·Π°ΠΏΡΡΠΊΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ΅ Π²Π°ΡΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ ru.netology.graphics.image, Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ, ΠΊΡΠΎΠΌΠ΅ ΠΊΠ»Π°ΡΡΠ° Main, ΠΌΠ΅Π½ΡΡΡ Π½Π΅Π»ΡΠ·Ρ.
ΠΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΠ΅ ΡΠ°ΠΉΠ» Main.java ΠΈ Π²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π²Π°ΠΌΠΈ .java-ΡΠ°ΠΉΠ»Ρ. ΠΡΡΠ³ΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΠΎΠ΄ΠΈΠ½ Π°ΡΡ
ΠΈΠ², ΡΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΠ΅ΠΏΠ»ΠΈΡ ΠΈ ΠΏΡΠΎΡΠ΅Π΅.






