パスワードを忘れた? アカウント作成
14201637 story
Android

一部のAndroid端末ではsRGB以外の色空間が指定された画像を壁紙にするとクラッシュする 21

ストーリー by hylom
色空間の罠 部門より

一部のAndroid端末で特定の画像を壁紙に設定するとクラッシュする問題が発生しているとのこと(iPhone Mania)。Google Pixelのほか、さまざまなメーカーのAndroid端末でこの問題が確認されているようだ。

この問題は、色空間としてsRGB以外が指定された画像を壁紙にした場合に発生するようだ。Android 10の壁紙機能では、sRGB以外の色空間をサポートしておらず、その場合にクラッシュが発生してしまうという。Android 11では自動的に色空間の変換処理が行われるようになったため、この問題は発生しないようだ(Dylan Roussel氏による検証)。

  • UI起動時に画像のヒストグラムを取得しようとしてこけて、
    UIの再起動ループになってしまう、みたいな状態ぽい?

    sRGB指定の画像なら大丈夫なのは確かだろうけど、
    この画像やこのプロファイルでのみ発生する特殊な事例なのか、
    タイトルに書かれているような、
    sRGB以外の色空間が指定された画像を壁紙にするとクラッシュする
    というようなレベルの事例なのかは不明。

    sRGBじゃないプロファイルが指定された画像なんて、
    今回のこの画像に限らずいくらでも公開されているわけで。
    世界中のAndroidユーザが、たまたま運良くそれを壁紙に指定したことがなかった。
    という可能性はかなり低そうな気がするので、
    エラーになるのは結構特殊な事例なんじゃないか、という気はする。

    ここに返信
  • by Anonymous Coward on 2020年06月03日 16時00分 (#3826774)

    Google/Skia/E3CADAB7BD3DE5E3436874D2A9DEE126
    そんな名前のプロファイルはありませんよってことかな?

    ここに返信
    • by Anonymous Coward on 2020年06月03日 21時02分 (#3826955)

      それっぽいですね。

      Dylan Roussel氏の投稿した内容によると [twitter.com]
      Android 11では peekWallpaperBitmap に第6引数で getColorManagementProxy の返値を渡していますが、
      Android 10のソース [googlesource.com]には無い引数なので11で拡張されたっぽい。

      getColorManagementProxy も11で追加されたようですが、このあたりから [googlesource.com]から推察するに、
      ディスプレイに最適なカラープロファイル値を返していそう。

      そして11では peekWallpaperBitmap を辿った先 [googlesource.com]にある、
      画像をビットマップに変換する BitmapFactory.decodeFileDescriptor の変換オプション [android.com]に、
      上記のカラープロファイル値をセットして、常にディスプレイに最適な物で変換していると予想。
      10の方は、ここがnullになってるので、画像に埋め込まれたICC Profileに基づいて変換する故に今回の問題となってそう。

      という妄想の答え合わせをしたかったのですが、Android 11のソースは、まだ一般人は見れないのね…残念

typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...