canvas教程

jpg, gif, png, bmp 之间转换(2)

字号+ 作者:H5之家 来源:H5之家 2017-09-09 12:06 我要评论( )

void __fastcall TForm1::Button4Click(TObject *Sender) { std::auto_ptrTPngImagepng(new TPngImage); std::auto_ptrTJPEGImagejpg(new TJPEGImage); std::auto_ptrTGIFImagegif(new TGIFImage); std::auto_ptrTB

void __fastcall TForm1::Button4Click(TObject *Sender)
{
  std::auto_ptr<TPngImage>png(new TPngImage);
  std::auto_ptr<TJPEGImage>jpg(new TJPEGImage);
  std::auto_ptr<TGIFImage>gif(new TGIFImage);
  std::auto_ptr<TBitmap>bmp(new TBitmap);

  png->LoadFromFile(L"D:\\a.png");             // 加载 a.png 图片

// bmp->Assign(png.get());                     // png 转为 bmp, 这句注释掉了,因为:
// 如果 png 有 Alpha 通道,是半透明的,那么直接 Assign 到 bmp 里面是黑背景的
// 如果需要指定一个背景颜色,就需要先把和 png 同样大小的 bmp 填充为指定的背景色
// 然后把 png 输出到背景色的 bmp 上,就达到了设定背景颜色的效果
  // Copyright Victor Chen,
  TColor clBkgnd = TColor(RGB(255,255,255));   // 背景色为白色 R=255, G=255, B=255
  TRect rcBmp(0, 0, png->Width, png->Height);  // bmp 的大小和 png 的大小相同

  bmp->PixelFormat = pf32bit;                  // bmp 设定为 32 位像素格式
  bmp->SetSize(rcBmp.Width(), rcBmp.Height()); // bmp 的大小和 png 的大小相同
  bmp->Canvas->Brush->Style = bsSolid;         // 用 bsSolid 刷子填充 bmp
  bmp->Canvas->Brush->Color = clBkgnd;         // 指定刷子的颜色为背景颜色
  bmp->Canvas->FillRect(rcBmp);                // bmp 填充为背景色
  bmp->Canvas->Draw(0,0,png.get());            // 把 png 输出到背景颜色的 bmp 上

  jpg->Assign(bmp.get());                      // 再由 bmp 转为 jpg
  gif->Assign(bmp.get());                      // 再由 bmp 转为 gif

  bmp->SaveToFile(L"d:\\test.bmp");            // 保存 bmp 到 test.bmp
  jpg->SaveToFile(L"d:\\test.jpg");            // 保存 jpg 到 test.jpg
  gif->SaveToFile(L"d:\\test.gif");            // 保存 gif 到 test.gif
}

 

bmp 转 jpg, gif, png

void __fastcall TForm1::Button15Click(TObject *Sender)
{
  std::auto_ptr<TBitmap>bmp(new TBitmap);
  std::auto_ptr<TJPEGImage>jpg(new TJPEGImage);
  std::auto_ptr<TGIFImage>gif(new TGIFImage);
  std::auto_ptr<TPngImage>png(new TPngImage);

  bmp->LoadFromFile(L"D:\\a.bmp");  // 加载 a.bmp 图片
  jpg->Assign(bmp.get());           // bmp 转为 jpg
  gif->Assign(bmp.get());           // bmp 转为 gif
  png->Assign(bmp.get());           // bmp 转为 png

  jpg->SaveToFile(L"d:\\test.jpg"); // 保存 jpg 到 test.jpg
  gif->SaveToFile(L"d:\\test.gif"); // 保存 gif 到 test.gif
  png->SaveToFile(L"d:\\test.png"); // 保存 png 到 test.png
}

 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas 和 express 的一款图片格式转换工具

    canvas 和 express 的一款图片格式转换工具

    2017-07-21 09:04

  • JS工具库封装:Video转换成Canvas

    JS工具库封装:Video转换成Canvas

    2017-06-27 16:01

  • 使用toBlob()方法将canvas对象转换为Blob对象

    使用toBlob()方法将canvas对象转换为Blob对象

    2017-06-06 13:04

  • HTML5网页中SVG和Canvas以及IMG图片的转换方法

    HTML5网页中SVG和Canvas以及IMG图片的转换方法

    2017-05-06 09:05

网友点评