スクショ連結くんのバグ
「スクショ連結くん」のバグを修正せずに長らく放置していました。 バグの現象としては、画像の連結時にスクリーンショットなどの画像が中心部分だけクロップされてしまうというものです。 今回、バグの原因について調べたので判明したことをまとめます。
- バグが起きる条件: iOSのスクリーンショットの様なpng画像をリクエストすると、画像の中心がクロップされた状態で返される場合がある。
- 原因: スクショ連結くんではPhotos.frameworkを利用している。 Photos.frameworkのrequestImage(for:targetSize:contentMode:options:resultHandler:)を呼び出すときには、 contentModeに.aspectFill、optionsにはresizeMode = .exactなどを指定している。 このフレームワークが上記の条件で指定された場合に、期待したようにリサイズされてない画像を返すことがある。
- 対処法: requestImageメソッドでは画像本来のサイズをリクエストし、他の方法でリサイズするようにする。
参考GIF画像
実際にバグを修正する際は、上記の情報を元にさらに詳細な分析を行い、正しい修正方法を採用することが望ましいです。