Единственный способ, которым я мог быстро найти, - использовать объект Desktop
:
from pywinauto import Desktop
d = Desktop(backend='uia')
main_window = d.window(title_re='.*- Microsoft Edge', control_type="Window")
#main_window.dump_tree() # print long output with control identifiers
# after some experiments I could find this is correct edit box
address_edit = main_window.child_window(auto_id="addressEditBox", control_type="Edit")
address_edit.set_edit_text('www.google.com')
# could not find another way to start loading the page yet
address_edit.type_keys('{ENTER}')
Да, это возможно для определенных случаев: вращения на 90 градусов и зеркальные отражения на изображениях. Основа алгоритма JPEG - части с потерями - включает повреждение изображения в блоки на 8x8 пикселей, выполнение дискретное косинусное преобразование на блоке и затем квантовании результата. Существует также некоторое преобразование цветового пространства и сжатие без потерь блоков сверху этого.
Вращение или зеркальное отражение 8x8 блок даст DCT с теми же основными коэффициентами, но возможно транспонированный и/или с некоторыми изменениями знака в зависимости от преобразования. Таким образом, основные шаги, чтобы вращаться или зеркально отразить изображение без потерь включили бы:
Абсолютно - просто изменяют значение ориентации в данных EXIF. Подавляющее большинство программ изображения будет уважать эту установку и показывать "повернутое" изображение.
Это также возможно к "вручную" (например, программно) поворачивают изображение способом без потерь, если определенные критерии верны - вращение должно составить 90/180 градуса, и ширина/высота должна кратные числа размера блока. Можно также зеркально отразить/зеркально отразить его. Я не знаю, достаточно ли программы изображения умны к особому случаю эта операция все же. Я предположил бы нет.
От JPEG FAQ:
"Существует несколько специализированных операций, которые могут быть сделаны на файле JPEG, не распаковывая его, и таким образом не подвергаясь потере поколений, которую Вы обычно получали бы от загрузки и пересохранения изображения в обычном редакторе изображений. В особенности возможно сделать вращения на 90 градусов и зеркальные отражения без потерь, если размеры изображения являются кратными размеру блока файла (обычно 16x16, 16x8, или 8x8 пикселей для цветного JPEGs).
..., Но Вам действительно нужно специальное программное обеспечение; вращение изображения в обычном редакторе изображений не будет без потерь".
Не jpg эксперт, но кажется, что ответ был бы Да для 90, 180, вращения на 270 градусов. (возможно, даже для 360! :))
Да, это возможно.
А быстрый поиск Google дал этот список программ , которые делают это
Если Вы не вращаетесь кратными числами 90 градусов затем, Ваше изображение должно будет выполнить некоторую интерполяцию, которая могла бы уменьшить качество Вашего изображения. Используя хорошую интерполяцию алгоритм поможет здесь.
Что касается открытия и пересжатия, я не уверен, что Вы на самом деле ухудшились бы качество, но затем я не уверен точно, как JPEG работает.
я предлагаю, чтобы Вы попытались сжать, управлять и повторно сжаться и лично убедиться, если результат достаточно хорош. То, что достаточно хорошо, подвергается Вашему приложению.
Если Вы говорите о вращении изображения JPEG затем нет никакого дальнейшего права сжатия? Это о вращающихся пиксельных местоположениях.
Выполнение вращения с любой программой потенциально изменит промежуточные размеры, поскольку этому нужно к исходному изображению хранителя, это может быть проблемой для рассмотрения.
Существует программа с именем jpegtran
jpegtran - утилита для перекодирования без потерь между различными форматами JPEG.
Чтобы повернуть изображение без потерь, вы можете сделать следующее:
$ jpegtran -rotate 180 -perfect -outfile rotated.jpg origin.jpg
И Вот список приложений, которые предоставляют функцию вращения JPEG без потерь на основе кода IJG
Согласно отличной статье на Понимание интерполяции цифрового изображения Sean MCHUGH:
Интерполяция также происходит каждый раз, когда вы вращаете или искажаете изображение. (...) Вращение на 90 ° без потерь, потому что пиксель никогда не должен быть перемещен на границу между двумя пикселями (и, следовательно, разделен).
и в конечном итоге завершается
Избегайте вращения ваших фотографий, когда это возможно; Если безвредное фото Требуется, вращайтесь не более одного раза.