2

これに似た他の質問/回答を読みましたが、次のいずれかです:

  • 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 をロード/保存することしかできません。(したがって、CVMatrix のドキュメントを参照してから 1 週間以内に jpeg のサイズを変更できることを証明できない限り、openCV は使用しないでください)

4

1 に答える 1

1

ImageMagick(より具体的には、Magick++それへのバインディング)がこれを行います。ここにいくつかの API ドキュメントがあります。これを行う方法の例 (確認のためにこれをコンパイルしていないため、エラーが発生する可能性があることに注意してください):

#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; 
}
于 2013-04-24T13:26:45.607 に答える