Я новичок в C, пытаюсь понять основы.
Я хочу вызвать функцию, которая создает и возвращает изображение в формате JPEG.
На другом языке, таком как Python, вы могли быпросто поместите возвращаемое значение из функции в переменную.Очевидно, что C не работает таким образом.
Каков правильный способ для одной функции запрашивать другую у jpeg-изображения и получать обратно это изображение неизвестного размера?
Является ли правильный способ создания структуры, которая определяет указатель на буфер и длину, а затем установить переменную вне области действия обеих функций, чтобы обе функции могли получить доступ к данным?
Предположительно, мне также нужно правильно освободить память, используемую внутри функции makeimg, с помощью tjFree(&_compressedImage);
Я скопировал код этой функции из сети.Это создает функцию JPEG.Я хочу вернуть полученный jpeg обратно.
static void makeimg() {
const int JPEG_QUALITY = 75;
const int COLOR_COMPONENTS = 3;
int _width = 1920;
int _height = 1080;
long unsigned int _jpegSize = 0;
unsigned char* _compressedImage = NULL; //!< Memory is allocated by tjCompress2 if _jpegSize == 0
unsigned char buffer[_width*_height*COLOR_COMPONENTS]; //!< Contains the uncompressed image
tjhandle _jpegCompressor = tjInitCompress();
tjCompress2(_jpegCompressor, buffer, _width, 0, _height, TJPF_RGB,
&_compressedImage, &_jpegSize, TJSAMP_444, JPEG_QUALITY,
TJFLAG_FASTDCT);
tjDestroy(_jpegCompressor);
//to free the memory allocated by TurboJPEG (either by tjAlloc(),
//or by the Compress/Decompress) after you are done working on it:
tjFree(&_compressedImage);
}
Любое руководство по хорошему подходу, чтобы получить оценку.
Я новичок в C (опыт работы с Python), так что если вы могли быпожалуйста, объясните как можно больше о вашем ответе, он будет очень признателен.