Welcome, Guest |
You have to register before you can post on our site.
|
|
|
scripts for comics trip |
Posted by: jacques_duflos - 05-11-2023, 08:11 PM - Forum: Extending the GIMP
- Replies (5)
|
 |
Hi there,
I do comics trip as a hobby. Here are some of my works. I use gimp for text, editing, sometimes coloring or texturing. I will show in this thread the scripts I did to ease some tasks. Comments and advice are welcome
This first script is made to prepare a scanned drawing. automatize de-saturating, changing contrast and light, and separate the ink from the background, so I can add a color layer in between and paint.
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# GIMP plugin to separe the ink form the paper of a b&w scan
# (c) Jacques Duflos 2023
#
# History:
#
# v0.0: 2023-xx-xx: First published version
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import sys, os
from gimpfu import *
import gimpcolor
#print "**********preparer un scan***************"
debug= False
def trace(s):
if debug:
print "****"
print s
print "****"
def preparerUnScan(image):
image.undo_group_start()
trace("1")
# récupérer l'image et le calque selectionné
layer = pdb.gimp_image_get_active_layer(image)
layer_name = pdb.gimp_item_get_name(layer)
trace("2 "+ layer_name)
#désaturer, pousser le contraste très haut et augmenter un peu la luminosité.
# voir pour en faire des paramètres éventuellement.
pdb.gimp_drawable_desaturate(layer, 0)
trace("3")
pdb.gimp_drawable_brightness_contrast(layer, -0.2, 0.8)
#enregistrer les variables de contexte avant de les modifier
opacity_old = pdb.gimp_context_get_opacity()
foreground_old = pdb.gimp_context_get_foreground()
paint_mode_old = pdb.gimp_context_get_paint_mode()
#print foreground_old
pdb.gimp_context_set_opacity(100)
pdb.gimp_context_set_foreground(gimpcolor.RGB(1.0, 1.0, 1.0, 1.0))
pdb.gimp_context_set_paint_mode(LAYER_MODE_COLOR_ERASE)
#effacer l'arrière plan blanc
pdb.gimp_layer_add_alpha(layer)
pdb.gimp_drawable_edit_fill(layer, FILL_FOREGROUND)
trace("fond effacé")
#créer le fond blanc
fond = pdb.gimp_layer_new(image, pdb.gimp_image_width(image), pdb.gimp_image_height(image), RGB_IMAGE , "fond", 100, LAYER_MODE_NORMAL)
num_layers, layer_ids = pdb.gimp_image_get_layers(image)
pdb.gimp_image_add_layer(image, fond, num_layers)
pdb.gimp_context_set_paint_mode(LAYER_MODE_NORMAL )
pdb.gimp_drawable_edit_fill(fond, FILL_FOREGROUND)
#rétablir les variables
pdb.gimp_context_set_opacity(opacity_old)
pdb.gimp_context_set_foreground(foreground_old)
pdb.gimp_context_set_paint_mode(paint_mode_old)
trace("contexte rétabli")
image.undo_group_end()
### Registrations
whoiam='\n'+os.path.abspath(sys.argv[0])
register(
'preparer-un-scan',
'Prépare un scan %s' % whoiam,
'prépare un scan',
'Jacques Duflos','Jacques Duflos','2023',
'Prépare un scan...',
'*',
[
(PF_IMAGE, 'image', 'Image', None)
],
[],
preparerUnScan,
menu='<Image>/Layer'
)
main()
This second script is made to move all the text layers in a layer group named texts.
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# GIMP plugin to move every text layer in a text layer group
# (c) Jacques Duflos 2023
#
# History:
#
# v0.0: 2023-xx-xx: First published version
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import sys, os
from gimpfu import *
import gimpcolor
print "**********calques texte dans groupe***************"
debug= True
def trace(s):
if debug:
print "**** "
print s
print "**** "
def calquesTextesDansGroupe(image):
image.undo_group_start()
trace("1")
groupe_textes = pdb.gimp_layer_group_new(image)
pdb.gimp_item_set_name(groupe_textes, "textes")
pdb.gimp_image_insert_layer(image, groupe_textes, None, 0)
calques=[]
for numero_calque in range(pdb.gimp_image_get_layers(image)[0]):
calques.append(image.layers[numero_calque])
trace(calques)
for calque in calques :
if pdb.gimp_item_is_text_layer(calque):
pdb.gimp_image_reorder_item(image, calque, groupe_textes, 0)
image.undo_group_end()
### Registrations
whoiam='\n'+os.path.abspath(sys.argv[0])
register(
'textes-dans-groupe',
'Mettre les calques textes dans un groupe %s' % whoiam,
'Mettre les calques textes dans un groupe',
'Jacques Duflos','Jacques Duflos','2023',
'Mettre les calques textes dans un groupe...',
'*',
[
(PF_IMAGE, 'image', 'Image', None)
],
[],
calquesTextesDansGroupe,
menu='<Image>/Layer'
)
main()
Im presently working on a script that makes a text bubble around a text layer.
enjoy !
|
|
|
Issues trying to Compose an image with masked channels |
Posted by: pronay - 05-10-2023, 10:34 PM - Forum: Scripting questions
- Replies (5)
|
 |
Hello,
This is my first time trying to write a Python script in GIMP so I am still learning my way around this stuff.
I am trying to implement a script by which I can perform the following steps:
1. Decompose an Image into RGBA channels (Colors->Components->Decompose->Color Model: RGBA)
2. Recompose an Image using R,G channels with B and A using Mask Value of 255 (Colors->Components->Compose->Color Model: RGBA, B and A use 255 mask value)
To do this in Python, I am attempting the following steps:
Code:
decomposed = pdb.plug_in_decompose(img, drawable, "RGBA", 0)
gimp.message("Performed Decompose")
# Grab the name of the original image
fileNameWithExt = pdb.gimp_item_get_name(draw)
fileNameNoExt = fileNameWithExt.split('.')
# Create the layers
gimp.message("Creating new Layers")
gimp.message("Setting up Red Layer")
layerR = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[0]), decomposed[0])
layerName = fileNameNoExt[0] + "_RGBA_Red"
pdb.gimp_item_set_name(layerR, layerName)
pdb.gimp_image_insert_layer(decomposed[0], layerR, None, 0)
gimp.message("Setting up Green Layer")
layerG = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[1]), decomposed[1])
layerName = fileNameNoExt[0] + "_RGBA_Green"
pdb.gimp_item_set_name(layerG, layerName)
pdb.gimp_image_insert_layer(decomposed[1], layerG, None, 1)
gimp.message("Setting up Blue Layer")
layerB = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[2]), decomposed[2])
layerName = fileNameNoExt[0] + "_RGBA_Blue"
pdb.gimp_item_set_name(layerB, layerName)
pdb.gimp_image_insert_layer(decomposed[2], layerB, None, 2)
gimp.message("Setting up Alpha Layer")
layerA = pdb.gimp_layer_new_from_drawable(pdb.gimp_image_get_active_layer(decomposed[3]), decomposed[3])
layerName = fileNameNoExt[0] + "_RGBA_Alpha"
pdb.gimp_item_set_name(layerA, layerName)
pdb.gimp_image_insert_layer(decomposed[3], layerA, None, 3)
gimp.message("Creating Layer Mask")
channelB = pdb.gimp_layer_create_mask(layerB, 1)
channelA = pdb.gimp_layer_create_mask(layerA, 1)
gimp.message("Inserting Channels to Decomposed Images")
pdb.gimp_image_insert_channel(decomposed[2], channelB, None, 0)
pdb.gimp_image_insert_channel(decomposed[3], channelA, None, 0)
# Now compose the new image into the target export image
gimp.message("Starting Compose Step for Output")
OutImage = pdb.plug_in_compose(decomposed[0], draw, decomposed[1], decomposed[2], decomposed[3], "RGBA")
gimp.message("Done with Composing Output")
However, when I run this script, I see that my output image is the exact same as the input. This means that the 255 masks are not being applied to the output composed image.
Is the approach I am using correct here? How should I be applying the 255 Mask Value to the B and A channels similar to the settings available for the Compose option in the UI?
Any advice here would be much appreciated.
|
|
|
|