Mobile Safariのフォームからのfile uploadで、png24/32がjpegになってしまう
結論から。
iOS6から可能になった、ファイルをアップロードするinput type="file"ですが、
表題にもあるように、PNGを送信する前に強制的にjpegに変換されてから送信されるようです。
今のところ解決策は見つかっていません。
※iOS7は未確認。解決してるといいなぁ...(遠い目)
ちなみにiOS6のChrome for iOSでも同じでした。
同じフォームのURLをPC(Chrome)で開き、アップロードすると、
正常にPNGのままアップされたので、コードやサーバの設定などが問題ではないと思います。。
いろいろググってみたんですが、そもそもあまり需要がないのか、
同じ現象自体が見つからない。。
iOS標準のキャプチャ(ホームボタン+電源ボタンで撮るやつ)って、
内部ではPNGで保存されてるので、
それをそのまま持ってきたいことってあるんですよね。。。
たとえば、きれいなグラデーションがかかった画面をキャプチャして、
それをアップロードすると、ブラウザ側で勝手にjpeg変換(=非可逆圧縮)されるので
ビミョーにノイズが乗ってしまうという。
※当然だけど、メールで送ったり、dropboxやiTunesで同期したりするとPNGのまま取得できます。
なんかバグチケットみたいなエントリーになっちゃいましたが、
はじめ自分のコードが悪いのかと思って散々調べた挙句の結果がこれだったので
一応共有しておきます。