Как отображать и исследовать изображения в JES

Кому полезно
- Учителям и ученикам, которые работают с JES и Jython.
- Начинающим программистам, изучающим обработку изображений.
Важно: JES использует Jython — реализацию языка Python, синтаксис которой очень похож на Python 2. Обратите внимание на стиль вывода и функции, специфичные для JES.
Основные понятия в одну строку
- Jython: версия Python, работающая на Java-платформе; в JES она используется для управления изображениями.
- Picture/object: объект изображения внутри JES, создаётся через makePicture(file).
- explore/show: функции для просмотра изображения в обычном и исследовательском режимах.
Что вы узнаете
- Как запрашивать у пользователя файл изображения и отображать его.
- Как получить ширину, высоту и путь файла изображения.
- Как создать дубликат изображения для безопасного редактирования.
- Как открыть режим исследования пикселей и читать координаты и RGB.
Быстрая справка по функциям (обзор)
- pickAFile() — открывает диалог выбора файла и возвращает путь.
- makePicture(path) — создаёт объект Picture из файла.
- show(pic) — отображает изображение в отдельном окне.
- explore(pic) — открывает окно исследования пикселей (показывает координаты и цвета).
- duplicatePicture(pic) — возвращает клон изображения.
- getWidth(pic), getHeight(pic) — возвращают размеры изображения.
Примечание: UI-кнопки JES остаются на английском: используйте кнопку Load Program для загрузки кода в среду и нажимайте Yes, если система спросит сохранить файл.
Как отобразить существующее изображение в JES
- Откройте программу JES на компьютере.
- В окне программирования в верхней части интерфейса создайте новую функцию displayPic().
Пример кода:
def displayPic():
file = pickAFile()
pic = makePicture(file)
show(pic)- Нажмите кнопку Load Program (между строкой команд и окном программирования). Когда появится запрос на сохранение, выберите Yes.
- Введите в строке команд вызов функции и нажмите Enter:
displayPic()После запуска откроется проводник файлов — выберите изображение и нажмите Open. Изображение отобразится в новом окне.
Важно: если изображение не отображается, проверьте путь файла и наличие расширения (.jpg, .png и т. п.).
Как вывести информацию об изображении (ширина, высота, путь)
Функции getWidth() и getHeight() позволяют получить размеры изображения. Также можно вывести путь к файлу для логирования или дальнейшей обработки.
def printHeightAndWidth():
file = pickAFile()
pic = makePicture(file)
width = getWidth(pic)
print "Width of the photo: " + str(width)
height = getHeight(pic)
print "Height of the photo: " + str(height)
print "File Location: " + fileПорядок работы:
- Нажмите Load Program, подтвердите сохранение.
- Введите в командную строку:
printHeightAndWidth()Откроется окно выбора файла; после выбора в командной строке вы увидите ширину, высоту и путь к файлу.
Совет: используйте эту функцию перед автоматическими преобразованиями, чтобы проверить ожидаемые размеры.
Как создать дубликат изображения
Копирование изображения полезно, когда нужно сохранить оригинал без изменений и работать с копией.
def duplicateImage():
file = pickAFile()
originalPic = makePicture(file)
pic2 = duplicatePicture(originalPic)
show(originalPic)
show(pic2)Порядок действий: загрузите программу, вызовите duplicateImage(), выберите файл — откроются два окна: оригинал и клон.
Важно: операции редактирования рекомендуется применять к клону (pic2), чтобы избежать потери исходных данных.
Как исследовать пиксели в изображении
Режим исследования позволяет кликнуть по пикселям и увидеть их координаты (x, y) и цвет в RGB. Это полезно для отладки алгоритмов фильтрации, подсчёта цвета и подбора пороговых значений.
def exploreImage():
file = pickAFile()
pic = makePicture(file)
explore(pic)
# или альтернативно:
# openPictureTool(pic)Порядок: загрузите функцию, выполните exploreImage(), выберите файл. В режиме explore кликните по пикселям — в панели вы увидите координаты и RGB-значения.
Полезно: сочетание explore() и печати getWidth/getHeight удобно для написания кода, который работает с координатами пикселей.
Отладка и распространённые проблемы
- Ничего не отображается при show(pic): проверьте, что pic не равен None и что путь корректен.
- Ошибка при makePicture(file): файл может быть повреждён или иметь неподдерживаемый формат.
- Печать в командной строке выглядит странно: Jython в JES использует синтаксис print без скобок (Python 2-подобный). Не заменяйте print “…” на print(“…”) без проверки версии.
- Диалог pickAFile() возвращает путь; если вы используете локали с нестандартными символами в путях, убедитесь, что JES корректно их обрабатывает.
Важно: сохраняйте изменения в коде перед нажатием Load Program. Несохранённые изменения не загрузятся в интерпретатор.
Альтернативные подходы
- Автоматический выбор файла: вместо pickAFile() можно напрямую передавать строковый путь (например, “C:/images/photo.jpg”), если путь известен заранее.
- Обработка пачки изображений: комбинируйте listdir/os.listdir (в Jython через Java API) и цикл для массовой обработки.
- Использование сторонних библиотек: если JES ограничивает по функциональности, можно перейти на стандартный Python + Pillow для более сложной обработки.
Когда подход не подходит
- JES удобен для образовательных целей, но для производственных задач и сложной обработки рекомендуется стандартный Python 3 с библиотеками Pillow, OpenCV.
Ментальные модели и лучшие практики
- Всегда работайте с копией: оригинал = источник правды, копия = эксперимент.
- Разделяйте «загрузку/просмотр» и «обработку» — это упрощает отладку.
- Пишите небольшие функции с понятными именами: displayPic, printHeightAndWidth, duplicateImage, exploreImage.
Роль‑ориентированные чеклисты
Для преподавателя:
- Убедиться, что у студентов установлена совместимая версия JES.
- Дать задание: реализовать displayPic и дополнительно — вывести размеры.
- Подготовить набор изображений разных форматов для тестов.
Для ученика/студента:
- Написать и загрузить displayPic().
- Запустить функцию и выбрать изображение.
- Изучить поведение explore() и зафиксировать RGB интересующих пикселей.
Для разработчика автоматизации:
- Написать скрипт, который прогоняет папку изображений и логирует ширину/высоту.
- Обработать ошибки чтения файла и неподдерживаемые форматы.
Критерии приёмки
- Функция displayPic() успешно открывает выбранный файл и отображает его в окне.
- Функция printHeightAndWidth() печатает корректные численные значения ширины и высоты, совпадающие с параметрами окна просмотра и/или метаданными файла.
- Функция duplicateImage() открывает два окна: оригинал и клон; клон является независимым объектом (изменения в нём не затрагивают оригинал).
- Режим explore() показывает координаты и RGB при клике по пикселю.
Набор тестовых случаев
- Типичный файл JPG 1920x1080: все функции работают, размеры совпадают.
- Прозрачный PNG: explore() показывает альфу (если поддерживается) или корректные RGB.
- Повреждённый файл: makePicture() должен выдавать понятную ошибку — подтвердите, что программа не падает с необработанным исключением.
- Файл с кириллическими символами в имени: проверка корректности пути.
Мини‑методология для урока (45 минут)
- 0–5 мин: вводная — что такое JES и Jython.
- 5–20 мин: практика — написать displayPic(), загрузить и отобразить изображение.
- 20–35 мин: добавить printHeightAndWidth(), прогнать тестовые изображения.
- 35–45 мин: исследование пикселей (explore()), обсуждение применений и ограничений.
Краткий глоссарий (1 строка)
- pickAFile: диалог выбора файла; makePicture: создание объекта изображения; show/explore: режимы просмотра; duplicatePicture: клонирование изображения.
Итог
Вы научились загружать и отображать изображения в JES, получать их размеры, создавать дубликаты и использовать режим исследования пикселей. Эти операции образуют базу для последующих упражнений по обработке изображений и фильтрации.
Важно: JES отлично подходит для обучения, но при переходе к промышленной обработке рассмотрите стандартные Python‑инструменты (Pillow, OpenCV).
Краткое резюме:
- Используйте pickAFile() + makePicture() + show() для быстрого просмотра изображений.
- getWidth()/getHeight() возвращают размеры; duplicatePicture() создаёт безопасную копию.
- explore() помогает получать координаты и RGB конкретного пикселя для отладки алгоритмов.
Похожие материалы
WordPress: проверить и защитить от wp3.xyz
Настроить sudo без пароля в Linux
Пригласить и управлять соавторами на Wix
Как продлить срок службы Lightning кабеля iPhone
Официально восстановленные Pixel от Google