特定のポップアップサムネイルが小さく、もしくは大きく表示されることがある

Issue #833 closed
Ito Mitsuhiro repo owner created an issue

Windows7環境におけるサムネイルのポップアップ表示で気になる挙動に気が付いたので報告します

■症状1:
特定の画像のサムネイルのポップアップが妙に小さく表示される
(ごくごくまれに、妙に大きく表示される画像もある)

具体例:
・ポップアップが小さく表示される画像
https://blog-imgs-22-origin.fc2.com/d/e/j/dejipc/rFactor129.jpg
・ポップアップが大きく表示される画像
https://upload.wikimedia.org/wikipedia/commons/a/a8/NASA-Apollo8-Dec24-Earthrise.jpg

補足:
・再現性は個々の画像に依存する
・再現条件(画像サイズ/形式/アスペクト比/撮影時期、等への依存性)は未確認(把握できず...)
・cache.dbを削除しても変化なし
・画像によってはサムネイルアイコンよりも小さいポップアップになってしまう
・サムネイルそのものは問題なく生成/表示されているように見える(ポップアップの大きさだけがおかしい模様)

■症状2:
画像によらず、ポップアップの枠の上辺が(他辺と比較して)やや細く描画されている

※上記症状1,2共にWindows10環境(手元の1809及び1909で確認)では再現しなかったので、Windows7固有の問題っぽいです
※NeeView 3.61/3.62/canary(0417)で挙動に違いがないことを確認しています

Canary(0424)で確認してみましたが、症状1,2共に変化はありませんでした。

本件の動作確認中にWin10でも症状1が再現されるケースがあることに気がついたので報告します。
(Win7での)サムネイル生成の時点で何かが起きているのかもしれません。

再現手順:

1. Win7のNeeViewで症状1の対象画像のブックサムネイルを生成(cache.dbへ記憶)させる
2. そのcache.dbをWin10のNeeViewフォルダにコピー
3.ページリスト及びページマークリスト以外のパネル(ブックサムネイルが利用されるパネル??)限定で症状1が再現される

NeeViewバージョン:
・Win7側: NeeView 3.61/3.62/canary(0417)/canary(0424)
・Win10側: NeeView canary(0424)

補足:
・対象ブックへのパスはWin7/Win10それぞれのPCで統一させて確認しました

Comments (5)

  1. Ito Mitsuhiro reporter

    こちらの WIndows7 32bit 環境では再現できず。

    追加の再現情報を求めています。

  2. Ito Mitsuhiro reporter

    件のWin7機で生成されたサムネイルキャッシュ(Cache.db)の中身をのぞいてみたところ、問題のサムネイルは画素密度情報(「水平方向の解像度」及び「垂直方向の解像度」のプロパティ)が異常値(96ppi以外の値)になっていることがわかりました。
    そして、NeeViewではその情報を参照してポップアップサイズを変化させている(ように見える)こともわかりました。
    一方、なぜサムネイルの画素密度情報が異常値になってしまうのかについてはよくわかりませんでした。(おそらく何らかの環境要因なのだとは思いますが...)

    つきましては、もしよろしければ下記いずれかの対策をご検討いただけないでしょうか。
    a) NeeViewのサムネイル生成処理において画素密度情報を強制的(?)に96ppiに書き換える
    b) NeeViewのポップアップ表示処理において画素密度情報を無視する(96ppi相当、或いはモニタのスケーリングに応じた値で処理する)

    この問題にハマる人はそれほど多くない気がしているので、優先度は低くてかまいません。

    --

    以下、参考情報です

    問題の根源と思われる症状:
    Cache.dbに格納されるサムネイルの画素密度情報(ppi)が96ppi以外の値になる

    症状の再現環境:
    手元のWin7環境のみ(手元のWin10環境では確認した限りどんな画像のサムネイルでも96ppi固定となる)

    症状解決の見込み:
    いまのところなし(原因不明)

    画素密度情報の確認手順:

    1. SQLite管理ツール(DB Browser for SQLite - https://github.com/sqlitebrowser/sqlitebrowser)でCache.dbを開いて、thumbsテーブルの当該レコードのValueデータをファイルとして出力

    2. 出力したファイルのプロパティダイアログの詳細タグに表示される「水平方向解像度」「垂直方向解像度」を確認

    画素密度情報の異常傾向:
    ・オリジナルの画像に画素密度情報が設定されている場合 -> オリジナルの情報が引き継がれる
    ・オリジナルの画像に画素密度情報が設定されていない場合 -> 法則は不明だが96ppiではない値になる

    ポップアップサイズへの影響:
    ・NeeViewのポップアップサイズは96ppiからの偏差量に反比例する(偏差量が負数の場合はポップアップサイズが大きくなる)
    ・偏差量が極端な負数になる場合はポップアップの幅がモニタ幅全域に拡大するが、なぜか高さには一定の制限がある模様
    ・異常値を含むCache.dbさえ読み込めば、他の環境でもテスト可能(cache.dbを正常に生成できる環境でもポップアップサイズに影響が出る)

    テスト用ファイル(対策bの確認用):
    http://whitecats.dip.jp/up/download/1613385858/attach/1613385858.zip
    (pass:nv)

  3. Ito Mitsuhiro reporter

    DPIが変化する原因はまだ不明(MagicScaler内部?)だが、DPIを無視して表示させることは可能

  4. Log in to comment