mający problemy w uzyskaniu orientacji obrazu z poniższym kodzieuzyskać orientację obrazu i obracać zgodnie z orientacją
string fileName = @"D:\...\...\01012015004435.jpeg";
int rotate = 0;
using (var image = System.Drawing.Image.FromFile(fileName))
{
foreach (var prop in image.PropertyItems)
{
if (prop.Id == 0x112)
{
if (prop.Value[0] == 6)
rotate = 90;
if (prop.Value[0] == 8)
rotate = -90;
if (prop.Value[0] == 3)
rotate = 180;
prop.Value[0] = 1;
}
}
}
i po uzyskać właściwą orientację i służą do obracania obrazu jak
private static RotateFlipType OrientationToFlipType(string orientation)
{
switch (int.Parse(orientation))
{
case 1:
return RotateFlipType.RotateNoneFlipNone;
break;
case 2:
return RotateFlipType.RotateNoneFlipX;
break;
case 3:
return RotateFlipType.Rotate180FlipNone;
break;
case 4:
return RotateFlipType.Rotate180FlipX;
break;
case 5:
return RotateFlipType.Rotate90FlipX;
break;
case 6:
return RotateFlipType.Rotate90FlipNone;
break;
case 7:
return RotateFlipType.Rotate270FlipX;
break;
case 8:
return RotateFlipType.Rotate270FlipNone;
break;
default:
return RotateFlipType.RotateNoneFlipNone;
}
}
ale problem jest w pierwszym kod
prop.Id
Zawsze otrzymuję [20625]
prop.Id == 20625
więc nie spełniają warunek za każdym razem Proszę dać mi znać, jeśli jakikolwiek błąd lub inna opcja
dzięki
Czy oglądane zdjęcia określają ich orientację? Nie jestem pewien, czy jest to właściwość ustawiona domyślnie (tj. Jaka może być domyślna orientacja twojego gravatar?) – Sayse
Zamiast sprawdzać każdy obraz 'PropertyItem', powinieneś po prostu zapytać o ten, który chcesz, np. 'image.GetPropertyItem (0x112);'. Jeśli właściwość obrotu nie jest obecna, rzuci wyjątek (który można przechwycić i obsłużyć). Nie wszystkie pliki obrazów będą miały właściwość obrotu. Zauważ także, że wartość 'PropertyItem.Type' powinna wynosić 3 (16-bitowe liczby całkowite), a wartość' Len' powinna wynosić co najmniej 2. Podczas gdy kod, który powinieneś, powinien działać, IMHO jest bardziej poprawne i użyj 'BitConverter ', aby przekonwertować pierwsze dwa bajty w tablicy' Wartość' na 'Int16', w przypadku jakiejś dziwnej wartości> 255. –
Cześć dzięki za odpowiedź, faktycznie jestem dostawcą usług i usługą sieciową w serwisie wcf. Android i programista ios wysłał mi obraz i jak na obrazek muszę obrócić lub przyciąć. więc muszą ustawić właściwość obrazu? –