Я занимаюсь разработкой в андроиде, используя libjpeg9. Данные изображения, которые я получаю с камеры Android, сжимаются в формате jpeg. Затем данные передаются на встроенную функцию C++ в виде массива unsigned char *. В соответствии с требованиями функции jpeg_mem_src JPP ((j_decompress_ptr cinfo, unsigned char * inbuffer, unsigned long insize)) libjpeg9 должен быть указан размер массива, который является параметром «inbuffer».Как получить массив изображений jpeg из массива unsigned char *?
Насколько я знаю, функция sizeof не может использоваться для получения размера массива, потому что это только указатель. Мы также не хотим изменять интерфейс нашей функции C++ для передачи размера массива.
Так что я хочу получить размер массива из заголовка jpeg. Кто-нибудь знает позицию заголовка, где я могу получить размер этого размера массива jpeg-изображений?
Любая помощь будет оценена!
Вы спрашиваете, как извлечь размер файла JPEG (массив) из файла JPEG (массив)? Эта информация вряд ли будет присутствовать - почему кто-нибудь сохранит длину файла внутри файла? - и консультирование [это] (https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format), похоже, подтверждает это подозрение. – ikegami
Re "* Мы также не хотим менять интерфейс нашей функции C++, чтобы передать размер массива *". Нет смысла передавать массив в функцию, не передавая ее длину (если массив не равен nul- завершен или подобен, что здесь не так). – ikegami
@ikegami, благодарю вас за ответ! Причина, по которой мы не хотим менять интерфейс нашей функции C++, заключается в том, что мы использовали opendv-функцию imdecode для распаковки jpeg-изображения, которое мы получаем с камеры Android. Это не требуется для обеспечения размера массива. Однако мы понимаем, что imdecode слишком трудоемкий, поэтому мы хотим использовать libjpeg для замены этой функции. Кто-то говорит, что imdecode также использует libjpeg. Это правда? – KleinXin