feat(渲染编辑): 补全替换图解析渲染与保存
build.yaml / build (push) Successful in 44s

This commit is contained in:
xiaoqidun committed 2026-10-09 23:50:29 +08:00
1 parent f96ef65741
commit 0ad34ee2b1
8 files changed
+54 -19

No files matched your search

+32
View File
@@ -94,6 +94,38 @@ func (r *Renderer) ImageResource(id string) (image.Image, error) {
return r.cachedImageResource(path)
}
// imageObjectResource 读取主图,无法读取或解码时使用对象声明的替换图
// 入参: object 图像对象
// 返回: image.Image 图片资源, error 读取或解码错误
func (r *Renderer) imageObjectResource(object ImageObject) (image.Image, error) {
read := func(id string) (image.Image, error) {
img, err := r.ImageResource(id)
if err == nil && (r.decodeImages || object.Substitution != "") {
pixels, decodeErr := imagePixelData(img)
err = decodeErr
if r.decodeImages {
img = pixels
}
}
return img, err
}
img, err := read(object.ResourceID)
if err == nil || object.Substitution == "" || object.Substitution == object.ResourceID {
return img, err
}
if r.pageContext != nil && r.pageContext.Err() != nil {
return nil, r.pageContext.Err()
}
if r.OutputContext != nil && r.OutputContext.Err() != nil {
return nil, r.OutputContext.Err()
}
img, substituteErr := read(object.Substitution)
if substituteErr != nil {
return nil, fmt.Errorf("image resource %q: %w; substitution %q: %w", object.ResourceID, err, object.Substitution, substituteErr)
}
return img, nil
}
// newEncodedImage 接管编码数据并读取头信息
// 入参: data 原始编码
// 返回: *EncodedImage 惰性图片, error 头信息或格式错误