バックグラウンド
ある時点で巨大なビットマップがあり、顔検出を使用する必要があるアプリを開発しているので、FaceDetector APIを使用します
問題
顔検出 API には、入力ビットマップに関する制限があります。
私がしたこと
後で元のビットマップが必要になるため、ファイルに保存しました。
その直後に、元のビットマップをリサイクルし、ファイルから一時的なビットマップをロードして、正しい構成を持っていますが、悲しいことに、偶数幅を使用する必要があるため、常に機能するとは限りません。均一な幅。
顔検出 API に幅として "width-1" を使用するように指示しようとしましたが、うまくいきませんでした。「java.lang.IllegalArgumentException: ビットマップ サイズが初期化と一致しません」と表示されました。なぜこのような奇妙な幅の制限が必要なのか、ビットマップが既にある場合に幅と高さのパラメーターが必要なのか、私には理解できません...
質問
私は何をすべきか?
奇数幅のビットマップで動作させ、ピクセルの列全体を無視することは可能ですか?
これを尋ねる理由は、ビットマップが非常に大きいためです。同じようなサイズ (幅が均等) の新しいビットマップに複製すると、一部のデバイスで OOM を簡単に取得できます。
JNIを使用してスケーリングできることはわかっていますが(以前に書いた投稿と同様に、こちら)、同じことを達成するための、よりハードコアではないより良い方法を見つけられることを願っています。
他に方法がない場合は、Android に役立つ JNI 関数があるのではないでしょうか?