AGG图形库如何对图像进行缩放

NBTestNC 2012-05-10 03:54:46
RT我想用AGG图形库对图像进行缩放,代码如何写呢?
...全文
237 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
godwitness 2012-12-11
  • 打赏
  • 举报
回复
能画png格式的图片么?
godwitness 2012-12-11
  • 打赏
  • 举报
回复
CxImage 这个类是哪里的?
NBTestNC 2012-05-22
  • 打赏
  • 举报
回复
行了,我自己解决了发出来,给搜到的人用

bool CxImage::Resample3(long newx,long newy,CxImage * pDest)
{
CxImage temp;
temp.Create(newx,newy,GetBpp(),CXIMAGE_FORMAT_BMP); // 创建图像

int nBpp = GetBpp();
int nWidth = GetWidth();
int nHeight = GetHeight();

agg::rendering_buffer rbuf_src,rbuf_dest; // 关联原图
rbuf_src.attach(GetBits(0),nWidth,nHeight,GetEffWidth());
rbuf_dest.attach(temp.GetBits(0),newx,newy,temp.GetEffWidth());

if( nBpp == 24 ) // 24位图
{
agg::pixfmt_rgb24 pixf24_src(rbuf_src);
agg::pixfmt_rgb24 pixf24_dest(rbuf_dest);

// 渲染器
typedef agg::renderer_base<agg::pixfmt_rgb24> renderer_base_type;
renderer_base_type renb(pixf24_dest);

// 线段分配器
typedef agg::span_allocator<agg::rgba8> span_allocator_type;
span_allocator_type span_alloc;

// 插值器
typedef agg::span_interpolator_linear<> interpolator_type;

// 变换矩阵
agg::trans_affine img_mtx;
interpolator_type ip(img_mtx);

typedef agg::span_image_filter_rgb_bilinear_clip<agg::pixfmt_rgb24,interpolator_type> span_gen_type;

span_gen_type span_gen(pixf24_src,agg::rgba(1,1,1),ip);

// 组合渲染器
agg::renderer_scanline_aa<
renderer_base_type,
span_allocator_type,
span_gen_type> my_renderer(renb,span_alloc,span_gen);

// 矩阵变换
double xzoom = (double)nWidth / newx;
double yzoom = (double)nHeight / newy;
img_mtx.scale(xzoom,yzoom);

agg::rasterizer_scanline_aa<> rasterizer;
rasterizer.reset();
rasterizer.move_to_d(0,0);
rasterizer.line_to_d(newx,0);
rasterizer.line_to_d(newx,newy);
rasterizer.line_to_d(0,newy);

agg::scanline_u8 sl;
agg::render_scanlines(rasterizer,sl,my_renderer);
}
else if( nBpp == 8 )
{

}
else; // 1bit,4bits不进行处理

if( pDest != NULL )
{
pDest->Transfer( temp );
}
else this->Transfer( temp );

return true;
}
NBTestNC 2012-05-22
  • 打赏
  • 举报
回复

CxImage cx_Image;
cx_Image.Load("d:\\123.bmp",false);
NBTestNC 2012-05-22
  • 打赏
  • 举报
回复
CxImage cx_Image;
cx_Image.Load("d:\\123.bmp",false);
笨笨周0915 2012-05-14
  • 打赏
  • 举报
回复
看下里面哪个变量是 是控制缩放的就行了
NBTestNC 2012-05-14
  • 打赏
  • 举报
回复
DEMO是看了,看不懂
笨笨周0915 2012-05-14
  • 打赏
  • 举报
回复
AGG 的DEMO不是有的么? 自己看看
NBTestNC 2012-05-14
  • 打赏
  • 举报
回复
还没人回答,什么情况啊!
NBTestNC 2012-05-11
  • 打赏
  • 举报
回复
木有人吗
NBTestNC 2012-05-11
  • 打赏
  • 举报
回复
up啊!

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧