Почему фотографии оказываются на боку
Матрица камеры всегда записывает изображение в одной и той же ориентации. Когда вы поворачиваете телефон вертикально, большинство камер не поворачивают пиксели: они сохраняют их в горизонтальном порядке и добавляют небольшой EXIF-тег, который говорит «показывай это повёрнутым на 90 градусов». Приложения, которые читают тег, показывают фото правильно, а те, что его игнорируют, — на боку. Поэтому изображение может нормально выглядеть в галерее и неправильно после загрузки на сайт, прикрепления в старом почтовом клиенте или вставки в документ.
Другие частые случаи:
- Сканы и фото документов, снятые сверху, когда телефон не смог определить, где верх.
- Скриншоты или экспортированные изображения, которые нужно сделать горизонтальными для слайда или макета печати.
- Селфи, зеркально отражённые фронтальной камерой, из-за чего текст на заднем плане читается задом наперёд.
Как здесь работают поворот и отражение
Инструмент декодирует каждое изображение в фоновом воркере внутри браузера, рисует его на canvas с выбранным преобразованием и снова кодирует. Современные браузеры применяют EXIF-тег ориентации при декодировании, поэтому выбранный угол отсчитывается от того, как фото выглядит в браузере, а не от сырых данных матрицы.
- 90° поворачивает изображение на четверть оборота по часовой стрелке. Ширина и высота меняются местами, так что фото 4000 на 3000 становится 3000 на 4000.
- 180° переворачивает его вверх ногами; размеры остаются прежними.
- 270° — четверть оборота против часовой стрелки.
- 0° оставляет угол без изменений — это то, что нужно, когда требуется только зеркальное отражение.
Отражения зеркалят картинку: «Отразить по горизонтали» меняет местами левую и правую стороны, «Отразить по вертикали» — верх и низ. Отражение — не то же самое, что поворот. При повороте на 180° текст остаётся читаемым, хотя и вверх ногами; при вертикальном отражении он к тому же читается задом наперёд. Оба отражения вместе дают ровно тот же результат, что и поворот на 180°.
Если задать угол и отражение одновременно, сначала отражение применяется к картинке в том виде, как вы её видите, а затем результат поворачивается. Если какая-то комбинация даёт не то, что ожидалось, попробуйте другое направление отражения: при повороте на 90° или 270° горизонтальное и вертикальное отражения визуально меняются ролями.
Качество и размер файла
Сам по себе поворот пикселей не приводит к потерям, но сохранение результата может:
- PNG сжимается без потерь, поэтому в повёрнутом PNG ровно те же пиксели, только в новом порядке. Прозрачность сохраняется.
- JPG и WebP перекодируются с качеством 92%. На фотографиях это визуально неотличимо от оригинала, но это новый проход сжатия, поэтому не стоит много раз вертеть один и тот же JPG туда-обратно. Выберите итоговую ориентацию и сделайте всё за один шаг.
Размер итогового файла часто отличается от исходного. Камеры обычно сохраняют JPG с качеством 95% или выше, поэтому повёрнутая копия с качеством 92% обычно получается немного меньше. Сильно сжатый JPG из мессенджера, наоборот, может слегка вырасти, потому что кодировщик не пытается повторить настройки оригинала.
Метаданные ориентации после поворота
Поскольку изображение перекодируется из canvas, повёрнутый файл записывается без EXIF-метаданных. Пиксели теперь стоят в правильном порядке, тега ориентации, который можно неверно истолковать, больше нет, и фото выглядит одинаково в любом просмотрщике, форме загрузки и документе.
На этом же шаге удаляются и остальные метаданные: модель камеры, дата съёмки и GPS-координаты, если телефон их записал. При публикации фото это обычно плюс для приватности, но если дата съёмки нужна для сортировки фотобиблиотеки, поворачивайте копию, а не оригинал. Чтобы посмотреть, что содержит фото до или после, используйте Просмотр EXIF-метаданных.
Практические советы
- Задайте угол и отражения до того, как перетаскивать файлы. Настройки применяются ко всем файлам, добавленным после этого, так что можно обработать целую папку вертикальных сканов за один раз и скачать их ZIP-архивом.
- Сначала рассортируйте смешанные пачки. Если одним фото нужен поворот на 90°, а другим на 270°, обработайте их двумя пакетами, а не исправляйте по одному.
- Отсканированные страницы сначала поверните, а затем обрежьте поля инструментом Обрезать изображение: кадрировать проще, когда страница уже стоит ровно.
- Поворот видео — другая задача, потому что перекодировать нужно каждый кадр; для роликов, снятых в неправильной ориентации, используйте Повернуть видео.
Результат сохраняет исходное имя и формат файла, поэтому повёрнутый IMG_2041.jpg скачивается как IMG_2041.jpg. Если скачивать в ту же папку, браузер обычно добавит к имени номер, чтобы не перезаписать оригинал.