2014-01-10 5 views
0

У меня есть JPG-изображение размером около 500 КБ, и я хотел бы повернуть изображение 90 вправо .. когда я поворачиваю это изображение с помощью окна просмотра фотографий размером или формат остается прежним ..Поворот изображения без изменения размера или формата

  Dim newImage As Image = Image.FromFile(imageName) 
      newImage.RotateFlip(RotateFlipType.Rotate90FlipNone) 
      newImage.Save(imageName) 

, когда я использую этот код изменяется формат из JPG в PNG, а также размер 500 КБ идет к 1.5MB

ответ

1

Он изменит свой формат в зависимости от вашего кода для сохранения изображения результата.

Это, как говорится, вы не сможете сделать преобразование JPG без потерь с помощью .NET. Вы должны открывать, поворачивать и сохранять с кодировкой.

Некоторые настольные приложения, такие как ACDSee, предлагают беспроигрышную JPG-ротацию, но они идут по ней на более глубоком уровне.

Давайте сделаем шаг назад: для чего нужно повернуть изображение? Это портрет, который может содержать информацию о ротации с камеры? Затем следует исследовать другие библиотеки изображений, такие как FreeImage, поскольку они могут открывать JPG и автоматически вращаться.

0

Возможно потому, что изображение перекодируется. Я не вижу ничего в документации, говорящей, что RotateFlip должен быть без потерь.

Быстрый тур с Google дает this article, что вы можете попробовать.

Изображения JPEG сжимаются, и при изменении чего-либо на изображении необходимо выполнить повторное сжатие, по крайней мере, для отредактированных частей. При вращении на 90 ° вы можете использовать этот специальный трюк без потерь, но это не будет применяться, если вы просто повернете изображение и попытаетесь сжать результат. Вам нужно использовать магический трюк. Если вы хотите удалить сжатие, сохраните его как BMP или используйте сжатие без потерь, например PNG.

Смежные вопросы