瘸子,脚本福:我怎样才能在颜色表中直接设置的值

问题描述 投票:1回答:1

我用Python编写的Gimp的一个Scriptfu脚本应用于现有的图像上的几个步骤,并把它转换成在这个过程中的索引图像。所产生的图像中最亮的颜色总是接近白色;我想将它设置为恰好是白。方便的是,这最轻的颜色总是在索引图像的颜色表最上面的颜色,所以我只是想设置的颜色映射到白色最上面的颜色。

我已经在如何操纵颜色表的API说明没有发现什么(即颜色在其中),所以目前这一步,我总是做手工(窗口→可停靠对话框→颜色表→点击最上面的颜色→文本控件输入“FFFFFF” →关闭对话框)。但当然Scriptfu东西的整个想法是自动完成所有步骤,而不只是少数。

谁能告诉我如何从一个Python脚本福脚本访问色彩表?

这里是我当前的代码(这甚至不尝试执行最后一步,由于缺乏对如何做到这一点的想法):

#!/usr/bin/env python

"""
paperwhite -- a gimp plugin (place me at ~/.gimp-2.6/plug-ins/ and give
              me execution permissions) for making fotographs of papers
              (documents) white in the background
"""

import math
from gimpfu import *

def python_paperwhite(timg, tdrawable, radius=12):
    layer = tdrawable.copy()
    timg.add_layer(layer)
    layer.mode = DIVIDE_MODE
    pdb.plug_in_despeckle(timg, layer, radius, 2, 7, 248)
    timg.flatten()
    pdb.gimp_levels(timg.layers[0], 0, 10, 230, 1.0, 0, 255)
    pdb.gimp_image_convert_indexed(timg,
        NO_DITHER, MAKE_PALETTE, 16, False, True, '')
    (bytesCount, colorMap) = pdb.gimp_image_get_colormap(timg)
    pdb.gimp_message("Consider saving as PNG now!")

register(
        "python_fu_paperwhite",
        "Make the paper of the photographed paper document white.",
        "Make the paper of the photographed paper document white.",
        "Alfe Berlin",
        "Alfe Berlin",
        "2012-2012",
        "<Image>/Filters/Artistic/Paperw_hite...",
        "RGB*, GRAY*",
        [
                (PF_INT, "radius", "Radius", 12),
        ],
        [],
        python_paperwhite)

main()
python gimp script-fu gimpfu
1个回答
1
投票

只需使用pdb.gimp_image_get_colormappdb.gimp_image_set_colormap

如果你想更改的条目确实永远是第一位,就足够了写:

colormap = pdb.gimp_image_get_colormap(timg)[1]
colormap = (255,255,255) + colormap[3:]
pdb.gimp_image_set_colormap(timg, len(colormap), colormap)
© www.soinside.com 2019 - 2024. All rights reserved.