堺風の頭部

徘徊、カメラ、PC、その他。

Mastodon (Photodn) に写真アップロードを失敗する件についての調査

photodn.net

 私の入り浸っているマストドンインスタンスのPhotodnで、18年9月頃から、写真ファイルのアップロードが上手くいかない問題が発生。

 発生条件がなかなかわからなかったり、そもそも私以外は発生してないらしいで困ってたんだけども、多少原因が見えてきたのでここに記す。
 Photodnに書き込むにはちょっと長いので。

 

発生状況

f:id:mubouan:20181014085459j:plain

 Windows 10上のブラウザでPhotodnを開いて、トゥートに写真ファイルを追加しようとすると、このアップロード中ゲージが全く進まない。

 

 ブラウザ側の問題かと思い、ChromeFirefox、Edgeで試したが、いずれも全く同じように止まる。

 ファイルによってはアップロードできる場合もある。

 

 もう少し詳細に追求すると、「PENTAX K-70で撮影したRAWファイル(.PEF)を、IrfanViewで開いて、リサイズするなどしてJPEGで保存する」時に発生するようだった。(この作業手順を簡易現像とします)
 でもって、Exifを削除するとアップロードできることがわかった。Exifが悪いらしい

 .PEFファイルを、PENTAX Digital Camera Utility (純正現像ソフト)で現像してJPEG保存したものなら、問題なくアップロードできた。

 

Exifを調べる

 そこで、「.PEFをIrfanViewで簡易現像したもの」と「純正ソフトで現像したもの」のExif情報を見比べると、かなり違いがあることがわかった。

 また、Exifの仕様については、CIPAのウェブサイトでPDFで公開されているので、それを見ながらあれこれ確認。
 すると、そもそもの話として、非圧縮の画像データとJPEG圧縮の画像データで別の記録内容になっていることがわかった。

 IrfanViewで.PEFを開いてJPEGに保存すると、非圧縮である.PEFについていたExif情報が、そのまま圧縮データのJPEGファイルに全く同内容でコピーされてしまう。なので、規格上おかしなExif情報がついたファイルができあがるわけだ。

 

 

ImageWidth  6080
ImageLength  4064
BitsPerSample   
Compression  1 (Unknown)
PhotometricInterpretation  32733
StripOffset  159552
SamplesPerPixel  1
RowsPerStrip  4064
StripByteCount  32538711
PlanarConfiguration  1

 IrfanViewで簡易現像したJPEGファイルのExifを見ると、純正現像したもののExifにはない項目がこれだけあった。

 で、これらの多くは、Exifのルール上「JPEG圧縮データではJPEGマーカで代用されるので記録してはならない」とされている項目だった。存在していること自体が規格上不当。
 CompressionはJPEGでも存在していいが、JPEGなら値は8。

 IrfanView上でリサイズしてから保存しても、ImageWidth・ImageHeightの値は更新されないなど、色々と齟齬が生じたりもしているようだ。

 

 

 

解決方法

 Exifを消してアップロードすればよい。

 写真系SNSなんだからExifつけときたいなー、と思ったけど、どっちみちMastodonExifを削除してしまうようだ。
 それに今まで気付いてなかったということは、他の人の写真のExifを確認したこともなかったということで。