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

Gimp Script-Fu执行选区删除操作后显示异常问题咨询

问题根源说明

  • 显示不同步的核心问题是gimp-displays-flush调用时机错误,以及缺少图层修改后的界面更新通知:
    1. 原代码中gimp-displays-flush放在了删除选区内容的gimp-drawable-edit-clear操作之前,刷新界面时删除操作还未执行,所以界面只渲染了裁剪后的状态
    2. 完成删除、取消选区操作后没有通知GIMP刷新界面和图层缩略图,修改结果不会主动渲染,必须等手动交互触发刷新才会显示正确效果
  • 你之前疑惑的gimp-item-delete接口不需要用到,这个接口的作用是删除图层、路径这类完整的对象,你要删除选区内容用当前的gimp-drawable-edit-clear完全正确,无需调整核心逻辑。

修正后的完整代码

; XML2 Conversation Portrait Preview Crop
(define (script-fu-xml2-convo-preview image layer)
    (gimp-image-undo-group-start image)
    (gimp-selection-none image)
    (gimp-image-resize image 152 152 -280 -496)
    (gimp-layer-resize-to-image-size layer)
    (gimp-image-select-ellipse image 0 0 0 152 152)
    (gimp-selection-invert image)
    (gimp-drawable-edit-clear layer)
    (gimp-selection-none image)
    ; 新增:通知GIMP该图层内容已修改,需要更新显示
    (gimp-drawable-update layer 0 0 (car (gimp-drawable-width layer)) (car (gimp-drawable-height layer)))
    ; 界面刷新移到所有操作完成之后
    (gimp-displays-flush)
    (gimp-image-undo-group-end image)
)
; populate script registration information
(script-fu-register 
    "script-fu-xml2-convo-preview"
    "XML2 Conversation Portrait Preview Crop"
    "Crops the preview window for XML2 conversation portraits."
    "BaconWizard17"
    "BaconWizard17"
    "September 2021"
    "*"
    SF-IMAGE        "Image"       0
    SF-DRAWABLE     "Layer"       0
)
; register the script within gimp menu
(script-fu-menu-register "script-fu-xml2-convo-preview" "<Image>/Marvel Mods/Skin Previews/XML2 PC")

修改说明

  • 调整了gimp-displays-flush的执行顺序,放在所有编辑操作完成之后,保证刷新时所有修改都已经生效
  • 新增gimp-drawable-update调用,主动通知GIMP目标图层内容发生变化,触发图层缩略图和画布的立刻更新
  • 完全保留原有裁剪、选区、删除的核心逻辑,仅补充界面更新相关的必要调用

内容的提问来源于stack exchange,提问作者E. Reed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:04