C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 写真のサムネイルの方向情報が正しく取りだせない


(過去ログ 177 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■101436 / inTopicNo.1)  写真のサムネイルの方向情報が正しく取りだせない
  
□投稿者/ 笹子能 (1回)-(2023/02/24(Fri) 13:52:57)

分類:[.NET 全般] 

Visual Studio V17.44 で VBを使い写真のサムネイルの方向情報を取りだそうとしています。exifの ID X112を取りだすと。rotation不要(=1)が帰ってくるのですが、実際は90度回転が必要でした。JPegAnalizerで調べると、正しく90度回転が必要となりました。

以下はコードです:
             Using fs As FileStream = File.OpenRead(wname)

            Dim fromStream As Image = Image.FromStream(fs, False, False)
     
            Dim ORIENTATION As ExifOrientations = ImageOrientation(fromStream)

引用返信 編集キー/
■101437 / inTopicNo.2)  Re[1]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ radian (112回)-(2023/02/24(Fri) 14:39:00)
No101436 (笹子能 さん) に返信
> Visual Studio V17.44 で VBを使い写真のサムネイルの方向情報を取りだそうとしています。exifの ID X112を取りだすと。rotation不要(=1)が帰ってくるのですが、実際は90度回転が必要でした。JPegAnalizerで調べると、正しく90度回転が必要となりました。

このへん試してみたらどうでしょう。(リンク先はC#なので、読めない場合はVB.NETのコンバータでも使ってください)

[System.Drawing が画像の方向を無視するので対応した話]
https://blog.shibayan.jp/entry/20140428/1398688687

[JPEGの回転角度を取得する]
https://blog.ch3cooh.jp/entry/20111222/1324552051

他の方法としては、nugetからJPEGの扱いに特化したライブラリ等を探してみてはどうでしょうか。
引用返信 編集キー/
■101438 / inTopicNo.3)  Re[1]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ 魔界の仮面弁士 (3569回)-(2023/02/24(Fri) 16:15:19)
No101436 (笹子能 さん) に返信
> Visual Studio V17.44 で
直近で 17.5 がリリースされたばかりですよ。(プレビューですら 17.6)

もしかして 17.44 ではなく、
2023/01/10 リリースの 17.4.4 ではありませんか?


> 以下はコードです:
> Dim ORIENTATION As ExifOrientations = ImageOrientation(fromStream)
肝心の "Function ImageOrientation" や "Enum ExifOrientations" の定義が書かれていないような…。

.NET で Exif を読み取る場合、System.Drawing.Bitmap クラスの PropertyItems プロパティから
該当する System.Drawing.Imaging.PropertyItem を読み取ることが多いと思いますが、
現状はそういうコードが書かれていると思えば良いのでしょうか。
https://dobon.net/vb/dotnet/graphics/getexifinfo.html


> exifの ID X112を取りだすと。rotation不要(=1)が帰ってくるのですが、実際は90度回転が必要でした。
> JPegAnalizerで調べると、正しく90度回転が必要となりました。
こちらでも確認してみたいのですが、実際の該当画像のサンプルを提供できますか? (Web で公開されている画像など)
引用返信 編集キー/
■101475 / inTopicNo.4)  Re[1]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ HattariB (57回)-(2023/03/01(Wed) 12:25:57)
No101436 (笹子能 さん) に返信
> exifの ID X112を取りだすと。rotation不要(=1)が帰ってくるのですが、
extf ID:112=1ってのは、TopLeft(←が↑)らしいんですけど、それがなぜ回転不要なのかがわからない。

いわゆるランドスケープなカメラと、ポートレートなカメラでは、違う値になるんですか?
ポートレートで撮った写真をランドスケープで見る場合は回転が必要だけど、ポートレートで撮った写真をポートレートで見るなら、回転不要ですよね?
それとも、TopLeftって、↑が←だったっけ?
どっちにしろ回転不要なんすか?
引用返信 編集キー/
■101476 / inTopicNo.5)  Re[2]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ 魔界の仮面弁士 (3578回)-(2023/03/01(Wed) 14:55:29)
No101475 (HattariB さん) に返信
>>exifの ID X112を取りだすと。rotation不要(=1)が帰ってくるのですが、
> extf ID:112=1ってのは、TopLeft(←が↑)らしいんですけど、それがなぜ回転不要なのかがわからない。
1 は、画素情報の先頭行(0th row)が top で、画素情報の先頭列(0th column)が left だということです。

> ポートレートで撮った写真をランドスケープで見る場合は回転が必要だけど、ポートレートで撮った写真をポートレートで見るなら、回転不要ですよね?
なるほど。私自身、仕様を読み解けていないので、画像が landscape / portrait の
いずれとなるのかについて、追加判断が必要になるのかどうかまでは把握できていません。

下記資料だと、0x112 の 値 1 が「1 = Horizontal (normal)」と書かれていた程度。
horizontal ってことは横長画像を基準としているのですかね?
https://exiftool.org/TagNames/EXIF.html

上記資料からリンクされている DC-008-Translation-2019-E.pdf (のアーカイブ)では、
0x0112 (=274) について下表のように記されていました。
でも日本語なら、下記の PDF の方がわかりやすいかも。(情報がちょっと古い?)
https://www.cipa.jp/std/documents/j/CIPA_DC-X008-2016-J.pdf


Value  0th Row     0th Column
-----  ----------  ----------
   1   top         left side
   2   top         right side
   3   bottom      right side
   4   bottom      left side
   5   left side   top
   6   right side  top
   7   right side  bottom
   8   left side   bottom
Other  (reserved)  (reserved)


0x0112 [Orientation] の仕様は追い切れていないのですが、
もし、landscape / portrait の追加判断が必要な場合、
それは単純に画像の縦横比で判断で良いのもなのか否か。
(仮に square だった場合はどうなるのか?)

あるいは、カメラの仰角を示す 0x9405 の [CameraElevationAngle] で無理やり疑似判断するとか?
0x0112 と違って記録されていないことも多いと思いますが、記録されていた場合、
中身は SRATIONAL 型(SLONG 分数値)で、値は -180 以上 180 未満だそうです。
分母が 0xFFFFFFFF の場合は不明値扱い。



■No101436 (笹子能 さん) に返信
> VBを使い写真のサムネイルの方向情報を取りだそうとしています。exifの ID X112を取りだすと。

サムネイルということは、
thumbnail image (IFD1) の 0x0112 [Orientation] でしょうか。
それとも main image (IFD0) の 0x0112 [Orientation] の方?

画像によっては 0x0112 [Orientation] 以外に、メーカー独自タグの
[LevelOrientation] や [CameraOrientation] などをもっている場合がありますが、
これらの仕様が Web 上で見つけられない…。

引用返信 編集キー/
■101481 / inTopicNo.6)  Re[3]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ HattariB (58回)-(2023/03/01(Wed) 20:07:38)
No101476 (魔界の仮面弁士 さん) に返信
>画素情報の先頭行(0th row)が top で、画素情報の先頭列(0th column)が left だということです。
調べていただいてありがとうございます。
exifの ID X112というのは、画像を正しい向きにするためには、何処を基準にすれば良いのか?
という答えを導くための情報だという理解をいたしました。

画像の基準が示されているだけなので、それを回転の要否に直結させるのはどうなのかなぁ。。。
用途が異なれば必要な処理が異なるんじゃね?

というのが私の考えで、「基準が回転という操作に直結する」ってところがわかんなかったんです。
そこは今でもわかんないんですが。なんかもうひとつ、別の基準があるんじゃないかなぁ。
と思ってます。


> 画像が landscape / portrait のいずれとなるのかについて、追加判断が必要に...
landscape / portraitを書いたのは、シチュエーションの違いで基準が変わる事がイメージしやすいかなぁ。
と思って使ったので、特に縦横の比率にこだわったわけではありません。
正方形のjpegもありますからね。
表現が紛らわしくてごめんなさい。


No101436 (笹子能 さん) に返信
「JPegAnalizerをお使いになったら回転が必要な事がわかった」という事なんですが、
読んだ値は1だったっすか?
同じファイルの同じ情報を読んでみて、違った結果が得られたって事は、
どっちかが間違っています。

追加情報をリクエストいたします。
JPegAnalizerで対象画像を解析した結果をご提示くださいな。
引用返信 編集キー/
■101482 / inTopicNo.7)  Re[4]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ 魔界の仮面弁士 (3580回)-(2023/03/01(Wed) 20:46:58)
No101481 (HattariB さん) に返信
>> 画素情報の先頭行(0th row)が top で、画素情報の先頭列(0th column)が left だということです。
> 調べていただいてありがとうございます。
> exifの ID X112というのは、画像を正しい向きにするためには、何処を基準にすれば良いのか?
> という答えを導くための情報だという理解をいたしました。

たとえば、スマホのインカメラは、左右反転の鏡像で撮影されることがあります。

この鏡像かどうかという情報も、Orientation (16進数で112、10進数で274 のタグ)で示されています。
https://qiita.com/yoya/items/4e14f696e1afd5a54403


今回の質問は、(主画像ではなく)サムネイルの方向情報と書かれているので、
それがどう影響するのかも気になるところなのですが、 No101436 を見ても
肝心の ImageOrientation の実装が分からないので、判断になやむ…。



> ■No101436 (笹子能 さん) に返信
> 「JPegAnalizerをお使いになったら回転が必要な事がわかった」という事なんですが、

JPegAnalizer ではなく、
JpegAnalyzer Plus ではないかと推察。

実際のサンプル画像を提供してもらえると検証しやすいのですけれどね。
引用返信 編集キー/
■101483 / inTopicNo.8)  Re[5]: 写真のサムネイルの方向情報が正しく取りだせない
□投稿者/ HattariB (60回)-(2023/03/02(Thu) 23:32:27)
No101482 (魔界の仮面弁士 さん) に返信
> JPegAnalizer ではなく、
> JpegAnalyzer Plus ではないかと推察。
第三者がビルドした、オリジナルのバグ付きJPEG解析アプリという可能性も捨てがたく。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -