Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
scripts for comics trip
#1
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 !
Reply


Messages In This Thread
scripts for comics trip - by jacques_duflos - 05-11-2023, 08:11 PM
RE: scripts for comics trip - by Ofnuts - 05-11-2023, 09:25 PM
RE: scripts for comics trip - by jacques_duflos - 06-10-2023, 12:38 AM
RE: scripts for comics trip - by Ofnuts - 06-10-2023, 07:23 AM
RE: scripts for comics trip - by jacques_duflos - 06-10-2023, 08:27 PM
RE: scripts for comics trip - by Ofnuts - 06-10-2023, 09:13 PM

Forum Jump: