Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: アプリ内から正常に表示できないAPNGを表示できるようにする #1931

Merged

Conversation

samunohito
Copy link
Contributor

やったこと

#461 について対応しました。

  • com.github.penfeizhou.android.animation:apng(以降、apngと表記)のバージョンを2.23.0→2.24.0に
  • apng側へ画像のバイト配列を渡す前にIENDチャンクより後ろを切り捨てるように処理を追加(理由はissue参照)

動作確認

アプリを端末にインストールし、リアクションピッカーおよびTLから表示確認

スクリーンショット(任意)

※対応前
Polish_20231027_171848139

※対応後
Polish_20231027_171816539

備考

issueに記載の通り、現象を完全に解決できるものではありません。あくまで軽減措置となります。

  • 問題の起こるPNGの表示が出来るようになるが、アニメーションは出来ない原因不明)
  • 画像バイト配列の末尾からIENDチャンクを無理やり線形探索しているため、わずかにパフォーマンスが落ちる

Issue番号

#461

return false
}

if (findIEndChunkPosition(sourceBytes) < 0) {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この処理についての質問と確認なのですが、
この処理はIENDが最後にない場合はAPNGとして処理しないという理解でよろしいでしょうか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

いえ、「IENDを持たないものだったらAPNGとして処理しない」という意図になります(終端とする指標が線形探索で検出できないので)。
改めて見ると若干複雑になってしまっていたので、拙いですがコメントを追加しました

beeb2e3

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

なるほど、コードの意図を読み取ることができていませんでした
よく読んだら理解できましたすみません🙇

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とんでもないです、配慮が足りていませんでした🙇

@pantasystem
Copy link
Owner

ありがとうございます!!!🙇🙇🙇🙇
計算量が増えるとのことですが、IENDが最後にないAPNGの方が件数としては少なそうなので
そこまで気にしなくて大丈夫そうです

@pantasystem
Copy link
Owner

こちらの環境でも動作確認することができたのでマージしたいと思います
コントリビュートありがとうございました🙇

@pantasystem pantasystem merged commit 4035b42 into pantasystem:develop Oct 27, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants