推荐一个比较好用的Bitmap Image Reader Writer Library--Bitmap_image

年风华
2023-12-01

           

推荐一个好用的Bitmap Image Reader Writer Library  

kezunhai@gmail.com

http://blog.csdn.net/kezunhai

          在日常的程序开发中,经常与碰到对Bmp图像进行操作的情况,一般来说我们都是采用windows自带的函数来操作,windows自带的函数使用起来多有不便。本文介绍一个比较好用的Bitmap_image(Bitmap Image Reader Writer Library)  。该库只有一个hpp文件,跟CImg有几分相似(但功能没有CImg丰富,可满足日常开发的基本需求)。该库不仅可以很方面的进行bmp文件的读写操作,而且还可以进行放大、缩小、上采样、下采样、翻转,按坐标索引读取和修改像素值等。看下面几个例子:

void test01()
{
   std::string file_name("image.bmp");

   bitmap_image image(file_name);

   if (!image)
   {
      printf("test02() - Error - Failed to open '%s'\n",file_name.c_str());
      return;
   }

   image.save_image("test02_saved.bmp");

   image.vertical_flip();
   image.save_image("test02_saved_vert_flip.bmp");
   image.vertical_flip();

   image.horizontal_flip();
   image.save_image("test02_saved_horiz_flip.bmp");
}
       上面的例子,通过一个文件名,实现对文件的读操作,并调用save_image将其另存为为test02_saved.bmp文件夹,随后进行一系列的垂直和水平翻转,并报保存(看看代码是不是很简单、方便?)。再看一个例子:

void test08()
{
   std::string file_name("image.bmp");

   bitmap_image image(file_name);

   if (!image)
   {
      printf("test08() - Error - Failed to open '%s'\n",file_name.c_str());
      return;
   }

   bitmap_image image1;
   bitmap_image image2;
   bitmap_image image3;
   bitmap_image image4;

   unsigned int w = image.width();
   unsigned int h = image.height();

   if (!image.region(0,0, w / 2, h / 2,image1))
   {
      std::cout << "ERROR: upper_left_image" << std::endl;
   }

   if (!image.region((w - 1) / 2, 0, w / 2, h / 2,image2))
   {
      std::cout << "ERROR: upper_right_image" << std::endl;
   }

   if (!image.region(0,(h - 1) / 2, w / 2, h / 2,image3))
   {
      std::cout << "ERROR: lower_left_image" << std::endl;
   }

   if (!image.region((w - 1) / 2, (h - 1) / 2, w / 2, h / 2,image4))
   {
      std::cout << "ERROR: lower_right_image" << std::endl;
   }

   image1.save_image("test08_upper_left_image.bmp");
   image2.save_image("test08_upper_right_image.bmp");
   image3.save_image("test08_lower_left_image.bmp");
   image4.save_image("test08_lower_right_image.bmp");
}
          在这个例子中,可以实现对图像的一个region的提取,并将提取的图片保存。除此以外,该库还有非常丰富的功能,更多可以参考库: http://download.csdn.net/detail/kezunhai/7828943

作者:kezunhai出处:http://blog.csdn.net/kezunhai欢迎转载或分享,但请务必声明文章出处。 

 类似资料: