<img/> 로 붙인 이미지가 브라우저에 의해 90도 회전하여 표시되나요?
6067 단어 RailsexifHTMLImageMagick브라우저
현상
iPhone등의 휴대전화로 찍은 사진을
<img>
태그로 web페이지상에 붙여 넣는 것을 생각합니다.다음 이미지를 확인에 사용합니다.
이 이미지를 그대로 img 태그로 웹 페이지에 붙여 넣으면 ...
맥주는 Mac Chrome과 Mac Safari에서 90도 왼쪽으로 회전합니다.
왜 IOS Safari에서 올바른 방향으로 표시됩니다.
원인
iPhone 등의 스마트 폰으로 찍은 사진에서는 카메라를 어느 방향으로 잡아도 저장할 때 이미지 회전이 이루어지지 않고 대신 EXIF 정보에 회전 정보(Orientation)가 저장됩니다.
이번에 사용한 사진 중, 굴 튀김 정식은 90°의 방향으로, 맥주는 0°의 방향으로 촬영한 것이었습니다.
이미지의 EXIF 정보를 들여다 보면,
그래서, 아무래도 내 iPhone (5s, iOS 10.0.2)에서는 90 ° 회전시의 이미지를 저장하고 방향을 EXIF로 지정하는 것 같습니다.
브라우저가 EXIF를 참조하여 이미지의 방향을 보정하지 않는 것이있는 것 같습니다.
2013년경의 약간 낡은 정보에 따르면, iOS의 브라우저(Safari, Chrome)만으로, EXIF정보에 의한 방향 보정이 걸리는 것 같습니다.
h tp // w w. 히데이와. 코 m/bぉg/아 rゔぇs/432
해결책
2 패턴의 해결 방법이 있습니다.
이번은 1번째를 채용해, 드디어 EXIF 정보를 지우도록(듯이) 실장해 보겠습니다.
(EXIF를 지우고 있는 것은, EXIF에 포함되는 GPS 정보로, 언제 어디에서 맥주를 마셨는지가 들키는 것을 막기 위해서입니다.)
htps : // 기주 b. 코 m / b 에이 mp / 그럼 ぁ Sc 리 pt ぉ 아 d
(우연히 이때는 Rails를 사용하고 있었으므로, 이하에서는 Ruby의 이야기를 합니다.
다른 언어에서도 똑같이 할 수 있어야합니다)
ImageMagick의 Ruby 라이브러리 을 사용하면 한 번에 회전 할 수있는 것 같습니다.
m_image.auto_orient! #EXIF情報をもとに、m_imageを回転させたものを返す
m_image.strip! #EXIF情報を消す
전체 코드:
image_original = File.open('/***/beer.jpg').read
rmagick_image = Magick::Image.from_blob(image_original).first
rmagick_image.auto_orient!
rmagick_image.strip!
image_rotated = rmagick_image.to_blob
이제 어떤 브라우저에서도 올바른 방향으로 표시되는 이미지를 만들었습니다.
그리고는, 특히 신경쓰지 않고 img 태그로 화상을 붙이면 OK입니다.
요약
EXIF 정보를 바탕으로 이미지를 회전, EXIF를 삭제하여,
브라우저 의존없이 이미지를 올바른 방향으로 표시 할 수있었습니다.
브라우저 의존에 대해서, iOS의 Safari, Chrome에서 EXIF를 바탕으로 화상이 회전되는 것은 알고 있습니다만, 그 이외의 브라우저 의존은, 검증할 수 있는 환경이 없어 확인하고 있지 않습니다.
뭔가 있으면 코멘트를 받을 수 있으면 다행입니다.
참고
CentOS에서 RMagick 설치 방법
Rmagick
부록
이미지 표시를 확인하는 데 사용한 html 소스 (URL이 변경되었습니다)
<html>
<body>
<img src="https://storage.googleapis.com/hoge/items/kakifurai.JPG" style="max-width: 100%;">
<img src="https://storage.googleapis.com/hoge/items/beer.JPG" style="max-width: 100%;">
</body>
</html>
Reference
이 문제에 관하여(<img/> 로 붙인 이미지가 브라우저에 의해 90도 회전하여 표시되나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gecko655/items/ea860c6fa32ff97eff89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)