libjpeg9を使ってアンドロイドのネイティブ開発をしています。アンドロイドカメラから取得した画像データはjpeg形式で圧縮されています。次に、データは、unsigned char *配列としてネイティブのC++関数に転送されます。 libjpeg9の関数jpeg_mem_src JPP((j_decompress_ptr cinfo、unsigned char * inbuffer、unsigned long insize))の必要に応じて、 'inbuffer'パラメータである配列のサイズを指定する必要があります。jpeg画像配列をunsigned char *配列から取得する方法は?
私が知る限り、sizeof関数はポインタだけなので配列のサイズを取得することはできません。また、配列のサイズを転送するために私たちのC++関数のインタフェースを変更したくない。
私はjpegのヘッダーから配列のサイズを取得したいと思います。誰も私はこのjpeg画像の配列のサイズのサイズを得ることができるヘッダーの位置を知っていますか?
ご協力いただければ幸いです!
JPEGファイル(配列)内からJPEGファイル(配列)のサイズを抽出する方法を尋ねていますか?その情報は存在しない可能性があります - 誰がファイルの中にファイルの長さを保存するのですか? - そして(this)(https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format)の相談はその疑惑を確認するようです。 – ikegami
Re "*配列のサイズを転送するために私たちのC++関数のインタフェースを変更したくない*"、配列に長さも渡さずに関数に渡すことは意味がありません(配列がnul-これに該当しないものとします)。 – ikegami
@ikegami、ご返信ありがとうございます!私たちのC++関数のインターフェースを変更したくない理由は、opencv関数imdecodeを使ってアンドロイドカメラから取得したjpegイメージを解凍したからです。これは、配列のサイズを指定する必要はありません。しかし、私たちはimdecodeが時間がかかりすぎることを認識しているので、この関数を置き換えるためにlibjpegを使いたいと思っています。誰かがimdecodeもlibjpegを使用していると言います。本当? – KleinXin