| Welcome, Guest |
You have to register before you can post on our site.
|
| Latest Threads |
Photobooth "look" - pytho...
Forum: Extending the GIMP
Last Post: gasMask
Yesterday, 02:45 PM
» Replies: 2
» Views: 554
|
Help with making this eff...
Forum: General questions
Last Post: Tygra
Yesterday, 01:37 PM
» Replies: 4
» Views: 560
|
Gimp 3.x scanner xsane pl...
Forum: Gimp 2.99 & Gimp 3.0
Last Post: jsamb
Yesterday, 10:05 AM
» Replies: 15
» Views: 14,953
|
Installing in a secure en...
Forum: Windows
Last Post: ThecknoDecker
01-09-2026, 06:18 PM
» Replies: 0
» Views: 78
|
GIMP 3.04: Image gets ran...
Forum: General questions
Last Post: sallyanne
01-09-2026, 11:57 AM
» Replies: 3
» Views: 569
|
Need help with Plug-Ins
Forum: General questions
Last Post: fritscho
01-08-2026, 12:31 PM
» Replies: 6
» Views: 835
|
erasing paintbrush stroke...
Forum: General questions
Last Post: sallyanne
01-07-2026, 10:54 PM
» Replies: 3
» Views: 675
|
Single single-window mode...
Forum: General questions
Last Post: teapot
01-07-2026, 07:55 PM
» Replies: 5
» Views: 768
|
Help and advice with this...
Forum: General questions
Last Post: Tygra
01-07-2026, 04:36 PM
» Replies: 12
» Views: 1,084
|
Layer Problems in 3.0.6
Forum: General questions
Last Post: NuV01aR!
01-05-2026, 06:00 PM
» Replies: 2
» Views: 617
|
|
|
| Installing in a secure environment |
|
Posted by: ThecknoDecker - 01-09-2026, 06:18 PM - Forum: Windows
- No Replies
|
 |
We want to install Gimp at our office.
But we are looking for a way to block the installation of plug-ins by our users.
The objective being that the IT Dept, will verify the plugins and the security risks of them before deploying to each user.
I haven't seen a way to block the installation of plugins by users. Espacially since they can always go and say it's in this or that folder (so finding one they have rights to).
Thanks,
|
|
|
Photobooth "look" - python script |
|
Posted by: chlowden007 - 01-09-2026, 07:42 AM - Forum: Extending the GIMP
- Replies (2)
|
 |
Hello
I asked Gemini GPT about how to replicate a colour chemical photobooth look in GIMP. Gemini explained the photobooth history, different lenses and chemical approaches and eventually wrote me a python script that creates the look.
Of course, the python script looks the part to an neophyte such as myself, but does not work either in python3 or Gimp python or as a filter. It does not show in GEGL either.
(I have yet to get a GPT sourced python script that works off the bat, so dev still have a career in front of them).
The funny thing is, the every time I ask the GPT to correct the script, it finds an "error" to correct, but none of these corrections ever make the code work.
The primary issue is that when I run the script in fu-script, I get loads of indentation error! Python indentation drives me crazy.
Therefore ... Does anyone know if there is a working "photobooth" GIMP script?
Can anyone help me debug this script for GIMP 3 linux please ?
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import gi
import datetime
try:
gi.require_version('Gimp', '3.0')
gi.require_version('Gegl', '0.4')
from gi.repository import Gimp, Gegl, GObject, GLib
except ValueError, e:
sys.exit(1)
def apply_schneider_look(image, drawable):
"""Applies optical and chemical effects."""
pdb = Gimp.get_pdb()
# 1. Mirror
drawable.transform_flip_simple(Gimp.OrientationType.HORIZONTAL,
True, 0)
# 2. Schneider Optical Effects
# We use Gimp.ValueArray.new(count) for GIMP 3 compatibility
dist_args = Gimp.ValueArray.new(3)
dist_args.insert(0, GObject.Value(Gimp.Drawable, drawable))
dist_args.insert(1, GObject.Value(GObject.TYPE_STRING,
'gegl:lens-distortion'))
pdb.run_procedure('gimp-drawable-edit-gegl-config', dist_args)
bloom_args = Gimp.ValueArray.new(3)
bloom_args.insert(0, GObject.Value(Gimp.Drawable, drawable))
bloom_args.insert(1, GObject.Value(GObject.TYPE_STRING, 'gegl:bloom'
))
pdb.run_procedure('gimp-drawable-edit-gegl-config', bloom_args)
# 3. Chemical Color Shift
cb_args = Gimp.ValueArray.new(11)
cb_args.insert(0, GObject.Value(Gimp.Drawable, drawable))
cb_args.insert(1, GObject.Value(GObject.TYPE_DOUBLE, -0.15))
cb_args.insert(2, GObject.Value(GObject.TYPE_DOUBLE, 0.0))
cb_args.insert(3, GObject.Value(GObject.TYPE_DOUBLE, 0.10))
cb_args.insert(4, GObject.Value(GObject.TYPE_DOUBLE, 0.0))
cb_args.insert(5, GObject.Value(GObject.TYPE_DOUBLE, 0.0))
cb_args.insert(6, GObject.Value(GObject.TYPE_DOUBLE, 0.0))
cb_args.insert(7, GObject.Value(GObject.TYPE_DOUBLE, 0.10))
cb_args.insert(8, GObject.Value(GObject.TYPE_DOUBLE, 0.0))
cb_args.insert(9, GObject.Value(GObject.TYPE_DOUBLE, -0.25))
cb_args.insert(10, GObject.Value(GObject.TYPE_BOOLEAN, True))
pdb.run_procedure('gimp-drawable-color-balance', cb_args)
# 4. Silver Halide Grain
grain_args = Gimp.ValueArray.new(3)
grain_args.insert(0, GObject.Value(Gimp.Drawable, drawable))
grain_args.insert(1, GObject.Value(GObject.TYPE_STRING,
'gegl:noise-rgb'))
pdb.run_procedure('gimp-drawable-edit-gegl-config', grain_args)
def photobooth_main_proc(
procedure,
run_mode,
image,
drawables,
args,
data,
):
Gimp.context_push()
image.undo_group_start()
# Constants
(STRIP_W, STRIP_H) = (600, 1800)
(MARGIN, FRAME_H) = (40, 400)
new_image = Gimp.Image.new(STRIP_W, STRIP_H, Gimp.ImageBaseType.RGB)
bg_color = Gimp.RGB()
bg_color.set_parse('#F9F7F2')
bg_layer = Gimp.Layer.new(
new_image,
'Paper Base',
STRIP_W,
STRIP_H,
Gimp.Precision.U8_GAMMA,
100,
Gimp.LayerMode.NORMAL,
)
new_image.insert_layer(bg_layer, None, 0)
Gimp.context_set_background(bg_color)
bg_layer.fill(Gimp.FillType.BACKGROUND)
y_offset = MARGIN
for i in range(min(len(drawables), 4)):
source_layer = drawables[i]
new_frame = Gimp.Layer.new_from_drawable(source_layer,
new_image)
new_image.insert_layer(new_frame, None, -1)
apply_schneider_look(new_image, new_frame)
target_w = STRIP_W - MARGIN * 2
scale_ratio = target_w / new_frame.get_width()
new_frame.scale(target_w, int(new_frame.get_height()
* scale_ratio), True)
new_frame.set_offsets(MARGIN, y_offset)
y_offset += FRAME_H + 15
# Mechanical Date Stamp
stamp_color = Gimp.RGB()
stamp_color.set_parse('#B22222')
Gimp.context_set_foreground(stamp_color)
date_str = datetime.datetime.now().strftime('PHOTO-ME - %d %b %Y'
).upper()
# Text Layer logic for GIMP 3
stamp_layer = Gimp.text_fontname(
new_image,
None,
0,
0,
date_str,
0,
True,
18,
'Sans-Serif',
)
if stamp_layer:
stamp_layer.transform_rotate_simple(Gimp.OrientationType.VERTICAL,
True, 0, 0)
stamp_layer.set_offsets(STRIP_W - 35, STRIP_H - 450)
stamp_layer.set_opacity(70)
Gimp.Display.new(new_image)
image.undo_group_end()
Gimp.context_pop()
Gimp.displays_flush()
return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS,
GLib.Error())
class PhotoboothPro(Gimp.PlugIn):
def do_query_procedures(self):
return ['python-fu-photobooth-pro']
def do_create_procedure(self, name):
procedure = Gimp.ImageProcedure.new(self, name,
Gimp.PDBProcType.PLUGIN, photobooth_main_proc, None)
procedure.set_image_types('RGB*')
procedure.set_documentation('Schneider Photobooth Pro',
'Full analog strip recreation',
name)
procedure.set_menu_label('Schneider Photobooth Pro...')
procedure.add_menu_path('<Image>/Filters/Artistic')
procedure.set_attribution('Gemini', 'Gemini', '2026')
return procedure
Gimp.main(PhotoboothPro.__gtype__, sys.argv)
|
|
|
| erasing paintbrush strokes |
|
Posted by: Laco - 01-05-2026, 08:05 AM - Forum: General questions
- Replies (3)
|
 |
I can't seem to find a way to use the eraser tool just to erase brush strokes. I can only seem to get the eraser tool to act upon the entire image, erasing to the background, instead of erasing only the paintbrush strokes.
I will better explain with a simple example. Say I have a simple single layer file with a photograph of a person. I use the paintbrush tool to draw a hat on the person. Maybe I don't like what I drew with the paintbrush so I want to erase it, or part of it. I switch to the eraser tool, but instead of only erasing the hat that I drew with the paintbrush it erases the top part of the head also, exposing the blank background. How do I erase just the hat drawn with the paintbrush and not the entire image?
(Hopefully there is a method that works whilst still working on a single layer. I am not experienced enough at the moment to work with layers.)
Any advice would be greatly appreciated.
|
|
|
| Single single-window mode. |
|
Posted by: teapot - 01-05-2026, 05:21 AM - Forum: General questions
- Replies (5)
|
 |
This is probably a silly question but what is singular in single-window mode? I used to think it meant literally one window but you can have dockable dialogs as separate windows in both single-window mode and multi-window mode.
Hitherto I have used multi-window mode mainly for two reasons:
1. I put in long layer names to document what I did and often have many layers so having the layers dialog as a separate window allows me to easily adjust it's size.
2. I often like to see more than one image side by side, or a new view of an image along side the original.
This was all fine in gimp 2.10.
In gimp 3 I'm finding window management in multi-window mode OK when one image is open but pretty unusable when more than one is open.
So I'm thinking I could use single-window mode but with dockable dialogs as separate windows, e.g. the layer dialog on it's own and several others docked together also in a separate window. Point 1. would still be OK but not point 2. I'm guessing you can't see more than one image at a time in single-window mode, not even a new view, is that what the single refers to?
|
|
|
| DOSBox-X release January 2nd 2026 |
|
Posted by: denzjos - 01-04-2026, 08:13 AM - Forum: Other graphics software
- Replies (1)
|
 |
For the DOS enthusiasts: DOSBox-X was released on January 2nd, 2026. DOSBox-X is an open source DOS emulator for running DOS applications and games. DOS-based Windows versions such as Windows 3.x and Windows 9x are officially supported. Compared to DOSBox, DOSBox-X is much more flexible and offers more features. For more information about DOSBox-X and usage guides, please refer to the DOSBox-X Wiki.
https://dosbox-x.com
|
|
|
| 3.0.6 appimage crash on Raspbian Trixie |
|
Posted by: NickJP - 01-04-2026, 02:08 AM - Forum: Alternate Gimp packagings
- Replies (1)
|
 |
I downloaded the arm64 appimage for 3.0.6 from https://download.gimp.org/gimp/v3.0/linu...4.AppImage, made it executable, and ran it. When I run it, the GIMP window appears, but a) a completely blank "Welcome to GIMP" dialog appears in the middle of the screen. Only the dialog titlebar is visible, and clicking on the "X" at the RH end of the titlebar doesn't close the dialog, and b) if I click on any of the GIMP menus and select any menu option (I've tried about half a dozen different options from different menus), the GIMP windows just disappears.
If I execute the appimage from a terminal prompt, I see the following. I've tried several times, including after a reboot, and the same problem each time.
Code:
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_image_get_storage_type: assertion 'GTK_IS_IMAGE (image)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_image_set_from_pixbuf: assertion 'GTK_IS_IMAGE (image)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_label_set_markup: assertion 'GTK_IS_LABEL (label)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_label_set_markup: assertion 'GTK_IS_LABEL (label)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_get_visible: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_widget_hide: assertion 'GTK_IS_WIDGET (widget)' failed
(gimp:113211): Gtk-CRITICAL **: 12:49:59.006: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed
/tmp/.mount_GIMP-3PnnbBn/usr/bin/org.gimp.GIMP.Stable: fatal error: Segmentation fault
/tmp/.mount_GIMP-3PnnbBn/usr/lib/aarch64-linux-gnu/gimp/3.0/plug-ins/script-fu/script-fu: fatal error: GIMP crashed
|
|
|
|