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

NBTestNC 2012-05-10 03:54:46
RT我想用AGG图形库对图像进行缩放,代码如何写呢?
...全文
249 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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啊!
1 使用AGG的准备工作 1 2 AGG图形显示原理见下图: 1 3 要理解AGG的工作原理,先看一段代码: 2 4 顶点源(Vertex Source) 5 4.1 头文件 5 4.2 类型 5 4.3 画一条简单的箭头直线(基于此处代码) 6 4.4 自定义一个顶点源(基于此处代码) 7 5 Coordinate conversion pipeline 坐标转换管道 9 5.1 变换矩阵(trans_affine) 10 5.1.1 头文件 10 5.1.2 类型 10 5.1.3成员变量 10 5.1.4 成员方法 10 5.1.5 实验代码(基于此 处代码) 10 5.2 坐标转换管道 11 5.2.1 头文件 11 5.2.2 类型(演示程序基于基于此处代码) 12 6 Scanline Rasterizer 15 6.1 扫描线Scanline 15 6.1.1 头文件 15 6.1.2 类型 15 6.1.3 成员类型 15 6.1.4 成员方法 16 6.2 Rasterizer 16 6.2.1 头文件 16 6.2.2 类型 16 6.2.3 成员方法 16 7 Renderers 渲染器 17 7.1 Scanline Renderer 17 7.1.1 头文件 17 7.1.2 类型 17 7.1.3 实验代码(基于此 处代码) 18 7.2 Basic Renderers 19 7.2.1头文件 19 7.2.2类型 19 7.2.3 构造函数 19 7.2.4 成员方法 19 7.2.5 实验代码(基于此 处代码) 20 7.3 PixelFormat Renderer 20 7.3.1 头文件 21 7.3.2 类型 21 7.3.3 构造函数 21 7.3.4 类型定义 21 7.3.5 成员方法 21 7.3.6 实验代码(基于此 处代码) 22 8 Rendering Buffer 22 8.1 头文件: 22 8.2 类型: 22 8.3 构造函数: 22 8.4 成员方法: 23 8.5 实验代码(基于此处代码) 23 9 AGG与GDI显示 23 10 使用AGG提供的pixel_map类 26 11 线段生成器(Span Generator) 27 12 图案类线段生成器 28 12.1头文件 28 12.2类型 28 12.3 示例代码,使用span_image_filter_rgb_bilinear_clip 29 13 插值器Interpolator 31 13.1 头文件 31 13.2 类型 31 13.3实验代码,使用span_interpolator_persp_lerp 32 14 变换器Transformer 33 14.1 头文件 33 14.2 类型 33 14.3 实验代码,使用trans_warp_magnifier 33 15 图像访问器Image Accessor 34 15.1 头文件 34 15.2 类型 34 15.3 实验代码 35 16 图像过滤器(Image Filter) 36 16.1 头文件 36 16.2 类型 36 16.3 实验代码 37 17 色彩类线段生成器 37 17.1 头文件 37 17.2 类型 38 17.3 示例代码 38 18 渐变颜色 40 18.1 实验代码,使用std::vector实现多颜色渐变 40 18.2 gradient_lut 41 18.2.1 头文件 41 18.2.2 类声明 41 18.2.3 实验代码,使用gradient_lut实现多颜色渐变 41 19 渐变方式 42 20其它色彩类的线段生成器 43 21 组合类线段生成器 44 21.1 头文件 44 21.2 类型 44 21.3 演示代码 45 22 AGG的字符输出 47 22.1 方式一、使用gsv_text对象 47 22.2 方式二、使用字体引擎(Font Engine) 50 22.2.1 头文件 50 22.2.2 类型 50 22.2.3 成员类型 51 22.2.4 成员属性 51 22.2.5 成员方法 51 22.2.6示例代码1 - 从顶点源层输出文字 52 22.2.7 示例代码2 - 从Scanline Rasterizer层输出文字 53 22.3 方式三、使用FreeType 54 22.4 方式四、字体缓存管理器(font_cache_manager) 55 22.4.1 头文件 55 22.4.2 类型 55 22.4.3 成员方法 55 22.4.4 示例代码1-作为Rasterizer渲染: 56 22.4.5 示例代码2-作为顶点源渲染: 57 23 小结 58

65,186

社区成员

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

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