使用像素阵列在SFML中处理图像
|
嘿,所以我试图制作一个接受图像反射和sf :: IntRect的函数
(这有4个整数,分别代表矩形的顶部,底部,左侧和右侧。此矩形代表所显示图像的一部分,但实际上并未切除矩形外部的像素)
然后通过切除IntRect外部的像素来创建新的压缩图像。我想我能做到这一点的唯一方法是制作一个尺寸与IntRect相同的2d像素阵列,然后通过遍历图像来填充它,但是由于我不知道IntRect的尺寸,我可以做一个常数数组......
这个问题不断出现,我认为要进行大量的向量工作,而对c_style数组的折衷会花费很多性能。
是否有一些简单的解决方案来大量操作/更改图像的尺寸和颜色?
没有找到相关结果
已邀请:
1 个回复
播匣扦阔食
或
)的一维数组,然后将索引计算到数组中。手动\”(
,其中
是
)。 (我通常对那个一维数组使用
,但这是另一回事了) 引用2D图像数据的常规方法(引用与按引用传递一样)是传递一个元组:
-左上像素的地址
-要加到
下一行的字节数
-图像的像素格式(如果只有一个,则可以省略) 当然,如果只有一种像素格式,则可以使用类型化的指针,并以该类型为单位(而不是字节)指定ѭ3。 使用这样的参考,您可以非常轻松高效地循环访问像素:
通过这种方式传递图像引用的好处是,您始终可以“调整”这样的引用以指向原始图像的子矩形。您只需要相应地调整值:将
指向子矩形的左上像素,并将
和
设置到子矩形的宽度和高度。
保持不变。 这意味着您不必“具体化”裁剪后的图像,只需将对任何功能的子矩形的引用传递给它,该子矩形就可以像在\“上一样在该子矩形上运行”完整的”图像。 而且,如果您真的想“实现”裁剪后的图像,那么您现在也应该有足够的信息来做到这一点。至少我希望如此:) 编辑:由于您对sf :: IntRect部分非常明确,但是只写了\“ image \”而不是sf :: Image,所以我假设您是在谈论自己管理的事情,而不是sf :: Image。好... 如果仅要将sf :: Image的子矩形复制到另一个sf :: Image,则可以执行以下操作: