Я столкнулся с этой проблемой при поиске, как писать в буфер вместо файла, и у меня возникли проблемы с поиском хорошего примера.Как правильно использовать jpeg_mem_dest с и без std :: vector
Это то, что говорит jpeglib.h, но я не уверен, как это использовать.
/* Data source and destination managers: memory buffers. */
EXTERN(void) jpeg_mem_dest JPP((j_compress_ptr cinfo,
unsigned char ** outbuffer,
unsigned long * outsize));
В example.c мы устанавливаем назначения данных на Шаг 2 так, как бы один использовать это здесь, если у нас уже есть std::vector<unsigned char> buffer
, который содержит значения RGB.
/* Step 2: specify data destination (eg, a file) */
/* Note: steps 2 and 3 can be done in either order. */
jpeg_mem_dest(&cinfo, /*WHAT GOES HERE*/, /*WHAT GOES HERE*/);
После этого не будет сделано, какие изменения мы делаем на Шаг 5 так, что мы пишем в же буфер, где наши расжатая значения RGB были?
/* Step 5: while (scan lines remain to be written) */
/* jpeg_write_scanlines(...); */
Я что-то пропустил? Я очень ценю любую помощь, благодарю вас заранее.
Я не могу заставить его работать. Либо получите нарушение доступа к записи, либо странные сбои без описания. Не могли бы вы привести рабочий пример? Было бы очень признательно. Также есть способ, которым я мог бы обходить массив rgba и напрямую писать в мой 'std :: vector'? –
У меня нет библиотеки. Я не могу скомпилировать рабочий пример. это сбой в вызове или доступ к буферам? Возможно, вам просто нужно инициализировать rgba до нуля. Просмотрите спецификацию интерфейса функции. –