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

NBTestNC 2012-05-10 03:54:46
RT我想用AGG图形库对图像进行缩放,代码如何写呢?
...全文
281 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啊!
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 全国计算机等级考试二级教程《Python语言程序设计》(2018年版)被视为针对Python入门者和备考人员的核心学习材料。该资料汇总了教材内的所有编程练习答案,这些答案在Python 3.5.3环境中经过实际执行测试,从而保障了代码的准确性和应用价值。备考人员借助这些答案,能够评估自身的学习进度,并深入理解和熟练掌握Python编程的基础原理与方法。 1. Python基础理论:Python作为一门高级编程语言,因其简明扼要的语法结构和卓越的功能表现而备受推崇。基础内容涵盖了变量、数据种类(例如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、逻辑控制(比如条件判断if-else,循环控制for、while)、函数的声明及使用、模块的引入等。 2. Python高级应用:Python的进阶内容涉及异常管理(try-except-finally结构),类与实例(面向对象编程的基础,包含类的构造、对象的生成、属性与方法的运用、继承机制、多态表现),装饰器(用于调整函数或类的功能特性),上下文管理器(借助with语句实现资源管理)等。 3. 数据文件处理:Python配备了全面的文件操作功能,涉及文件的开启、数据读写、关闭操作,以及多种操作模式(例如r模式用于读取,w模式用于写入,a模式用于追加内容等)。此外,还包括文本文件与二进制文件的转换处理,以及文件的位置调整、复制和删除等操作。 4. 标准库的运用:Python的标准库资源极为丰富,比如os模块提供操作系统接口,sys模块用于获取系统参数,random模块可用于生成随机数值,datetime模块负责处...

65,213

社区成员

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

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