Open
Description
発生している事象
iPad Pro 12.9(2048x2732)やiPhone XS Max(1242x2688)などの高解像度端末において、画面のスクリーンショットを投稿できない場合があります。
原因
クライアントではなくWebUIから投稿されるスクリーンショットはiOS、Android、Windowsの区別なく、png形式で/api/v1/media
へPOSTされます。
その際、画像はいったんUploadComposeアクションを経由してresizeImage関数に渡り、ここでメタデータによる画像回転がある場合にメタデータによる回転を削除してデータそのものを回転させる処理や画像サイズが大きすぎる場合に縮小するなどの処理を行いアップロードされますが、その圧縮形式は元ファイルの形式に従うためスクリーンショットの場合はpng形式で送信されます。
その際、高解像度のpng形式画像はその画像傾向によりアップロードできる画像ファイルのサイズ上限である8MBを超えてしまう場合があります。
アイマストドンはImgConverterにより透明部分のないpng画像をjpg形式に変換して保存するようになっていますが、paperclipによる画像ファイルのサイズ上限のvalidationはImgConverterによる変換よりも前に行われているようで、そのために変換が試みられることなくエラーレスポンスが返答されています。
Activity