05-11-2023, 08:11 PM
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.
This second script is made to move all the text layers in a layer group named texts.
Im presently working on a script that makes a text bubble around a text layer.
enjoy !
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 !