You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保存Blend画布?使用image/imageproc绘制混合三角形的保存问题

解决Blend画布无法保存的问题

你只需要直接访问Blend包装的内部RgbaImage实例即可调用save方法——因为Blend是元组结构体,通过.0就能取出内部的图像对象。

修改后的代码如下:

use image::{Rgba, RgbaImage};
use imageproc::drawing;
use imageproc::drawing::Blend;
use imageproc::point::Point;

struct Triangle([Point<i32>; 3]);

fn main() {
    let triangle = Triangle([
        Point { x: 0, y: 0 },
        Point { x: 100, y: 400 },
        Point { x: 400, y: 100 },
    ]);
    let mut image = Blend(RgbaImage::new(400, 400));
    drawing::draw_polygon_mut(&mut image, &triangle.0, Rgba([255, 255, 0, 255]));
    drawing::draw_polygon_mut(&mut image, &triangle.0, Rgba([0, 0, 255, 255]));
    // 取出Blend内部的RgbaImage调用save
    image.0.save("test.png").unwrap();
}

原理很简单:Blend只是为实现混合绘制逻辑的包装器,它本身并没有继承RgbaImage的方法,必须直接操作它包裹的原始图像实例才能完成保存。修改后,黄色和蓝色的重叠三角形会混合成白色,生成的图片也能正常保存。

内容的提问来源于stack exchange,提问作者Panic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:24:56