gpt4 book ai didi

c - 从 C 函数返回图像的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 14:36:25 25 4
gpt4 key购买 nike

我是 C 语言新手,试图了解基础知识。

我想调用一个创建并返回 jpeg 图像的函数。

在Python等其他语言中,您只需将函数的返回值放入变量中即可。 C 显然不是这样工作的。

那么一个函数向另一个函数请求一张 jpeg 图像并接收回该大小未知的图像的正确方法是什么?

正确的方法是创建一个定义指向缓冲区的指针和长度的结构,然后在两个函数的范围之外设置一个变量,以便两个函数都可以访问数据?

大概我还需要通过 tjFree(&_compressedImage); 正确释放 makeimg 函数内使用的内存;

我从网上的某个地方复制了该函数的代码。它创建一个 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 经验),因此,如果您能尽可能详细地解释您的回答,我们将不胜感激。

最佳答案

有多种方法可以做到这一点。我更喜欢以下内容:

/*
* Makes an image and returns the length
* returns < 0 on error
*
* Call as follows:
* char *image ;
* int len = make_image( &image );
* if (len < 0) { /* Process error code */ }
*/
int makeImage(void **image) {
unsigned char *_image ;
int length ;
/* Create image and set the length of buffer in length variable */
/* Return the image */
*image = _image ;
return length;
}

如果不需要多个错误代码,将图像参数设置为 null 并检查它可能就足够了。

关于c - 从 C 函数返回图像的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58073059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com