Поворот изображений с помощью GDI + - PullRequest
0 голосов
/ 24 октября 2011

Я работаю над поворотом изображения с помощью GDI +.Согласно метаданным изображения, должно быть 8 различных типов ориентации (http://www.impulseadventure.com/photo/exif-orientation.html).. Но я получаю одинаковую ориентацию для всех изображений, в горизонтальной или вертикальной ориентации. Кто-нибудь может подсказать, в чем проблема, или я что-то упустил?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 мая 2013

Просто небольшое улучшение,

Я бы не стал проверять аргумент исключение, которое стоит циклов ЦП.

   var orientation_index = Array.IndexOf(b.PropertyIdList, propertyId );

        if ( orientation_index <0) return RequestedAction.None;
        byte total =0;
        foreach (byte b in b.GetPropertyItem(OrientationId).Value)
        {
            total += b;
        }
0 голосов
/ 24 октября 2011

Пару дней назад я добавил автоматический поворот в библиотеку imageresizing.net в качестве плагина AutoRotate. Я включаю соответствующий исходный код, который, надеюсь, поможет вам.

if (!"true".Equals(settings["autorotate"], StringComparison.OrdinalIgnoreCase)) return RequestedAction.None;

int propertyId = 0x0112;
PropertyItem pi;
try {
    pi = b.GetPropertyItem(propertyId);
} catch (ArgumentException) {
    return RequestedAction.None;
}
if (pi == null) return RequestedAction.None;

int total = 0;

foreach (byte by in pi.Value) total += by; //Does not handle values larger than 255, but it doesn't need to, and is endian-agnostic.

if (total == 8) b.RotateFlip(RotateFlipType.Rotate270FlipNone);
if (total == 3) b.RotateFlip(RotateFlipType.Rotate180FlipNone);
if (total == 6) b.RotateFlip(RotateFlipType.Rotate90FlipNone);

if (total == 2) b.RotateFlip(RotateFlipType.RotateNoneFlipX);
if (total == 4) b.RotateFlip(RotateFlipType.Rotate180FlipX);
if (total == 5) b.RotateFlip(RotateFlipType.Rotate270FlipY);
if (total == 7) b.RotateFlip(RotateFlipType.Rotate90FlipY);

b.RemovePropertyItem(propertyId);

Как к сведению, если вы делаете изменение размера изображения в ASP.NET, , вам следует прочитать эту статью о том, как это сделать безопасно, или использовать ImageResizing. Сетевая библиотека вместо.

...