2021년 10월 26일 화요일

asp.net core 에서 사진업로드시 가로로만 저장될때

asp.net core로 사진업로드 작업중에 요즘 핸드폰 촬영결과물이 천차만별이다보니
어떤건 사진하나에 20메가가 넘어가는것도있다. 
그래서 올라온 사진을 메모리 스트림에담고 이미지로 변환후 사이즈를 변경하여
저장을 했는데 항상 가로 사진으로만 저장이 되더라..
이곳저곳 알아봤는데 이럴경우 사진파일에 내장되어있는 특정 플레그값으로
사진 로테이션 처리를 해주어야 한다.


아래는 원본이 있는 코드구르 사이트

https://www.codeproject.com/Tips/724303/Image-Orientation-of-Images-Uploaded-via-ASP-NET-f


[이미지 파일받고 변경해줘야하는 코드]

byte[] imageData = new byte[fileUpload.ContentLength];
fileUpload.InputStream.Read(imageData, 0, fileUpload.ContentLength);
MemoryStream ms = new MemoryStream(imageData);
Image originalImage = Image.FromStream(ms);
if (originalImage.PropertyIdList.Contains(0x0112))
{
  int rotationValue = originalImage.GetPropertyItem(0x0112).Value[0];
  switch (rotationValue)
  {
      case 1: // 가로방향 암것도 하지않음
      break;

      case 8: // 오른쪽 90도 회전됨
        originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate270FlipNone);
        break;

      case 3: // 아래로 뒤집힘
        originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate180FlipNone);
        break;

      case 6: // 왼쪽으로 90도 회전됨
        originalImage.RotateFlip(rotateFlipType: RotateFlipType.Rotate90FlipNone);
        break;
  }
}


한번에 되면 얼마나 좋니!!

댓글 없음:

댓글 쓰기