gpt4 book ai didi

c++ - 将 jpeg 从一个缓冲区调整到另一个缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:31 25 4
gpt4 key购买 nike

我阅读了与此类似的其他问题/答案,但它们要么:

  • 读/写 jpeg 文件
  • 使用.NET

在我的例子中,我有一个包含 jpeg 的缓冲区(在本例中为 unsigned char*)。这意味着它看起来像这样:

FF D8 FF E0 ...

不是

my_image.jpg

我想找到一个可以调整此 jpeg 大小并将输出放入另一个缓冲区的库。

示例:

SuperLibrary::resize_jpeg(jpeg_buffer, resized_jpeg_buffer, 640, 480);

甚至:

SuperLibrary::Image my_jpeg = SuperLibray::Image(jpeg_buffer);
my_jpeg.resize(640,480);
my_jpeg.write(resized_jpeg_buffer);

此外,我想要一些非常简单的东西。 CImg 起初看起来很完美,但它只能从文件中加载/保存 jpeg。 (所以,请不要使用 openCV,除非你能证明我可以在不到一周的时间内通过 CVMatrix 上的文档调整我的 jpeg)

最佳答案

ImageMagick(更具体地说,Magick++ 绑定(bind)到它)将执行此操作。有一些 API 文档 here .如何执行此操作的示例(请注意,我没有编译它来检查,因此可能存在错误):

#include <Magick++.h> 
#include <iostream>

using namespace Magick;

int main(int argc,char **argv)
{
InitializeMagick(*argv);
unsigned char* img_data;
//Fill in img_data

Blob b(img_data, image_data_len);
Image img(b);
img.resize("640x480");

Blob resized;
master.write(resized);

unsigned char* img_data_resized = new unsigned_char[resized.length()];
std::copy(resized.data(), resized.data() + resized.length(), img_data_resized);

//Do whatever you want with resized image data...

delete[] img_data_resized;
return 0;
}

关于c++ - 将 jpeg 从一个缓冲区调整到另一个缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16192513/

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