Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 5,013
» Latest member: kerinacoach
» Forum threads: 7,745
» Forum posts: 42,089

Full Statistics

Latest Threads
Why am'I fighting with GI...
Forum: Linux and other Unixen
Last Post: NetWeeZurd
11 hours ago
» Replies: 2
» Views: 152
Can tooltip display time ...
Forum: Gimp 2.99 & Gimp 3.0
Last Post: NetWeeZurd
11 hours ago
» Replies: 4
» Views: 1,291
Problem posting an update...
Forum: Gimp-Forum.net
Last Post: Scallact
12-21-2025, 10:19 PM
» Replies: 19
» Views: 963
Paint bucket acts "weird"
Forum: General questions
Last Post: PieterJW
12-21-2025, 06:59 PM
» Replies: 7
» Views: 394
Install gimp user manual ...
Forum: Linux and other Unixen
Last Post: rich2005
12-21-2025, 09:03 AM
» Replies: 1
» Views: 189
Very, very nice startup t...
Forum: General questions
Last Post: mrkid
12-18-2025, 04:37 PM
» Replies: 0
» Views: 183
Why does HTML/css scale i...
Forum: General questions
Last Post: Tas_mania
12-17-2025, 07:20 PM
» Replies: 1
» Views: 255
Path autocurves plugin (G...
Forum: Extending the GIMP
Last Post: InquisitiveAsHell
12-17-2025, 07:40 AM
» Replies: 6
» Views: 743
Transparent Background Ad...
Forum: General questions
Last Post: Kramskry
12-16-2025, 08:52 PM
» Replies: 2
» Views: 344
Inside drop shadow maybe?...
Forum: General questions
Last Post: denzjos
12-16-2025, 04:45 PM
» Replies: 2
» Views: 268

 
Exclamation Why am'I fighting with GIMP now?
Posted by: NetWeeZurd - 12-21-2025, 12:26 AM - Forum: Linux and other Unixen - Replies (2)

Hi guys,


Under Windows, I have been using GIMP for years... actually... for decades. Every new version was a loved improvement.

I have 2.10 installed on 3 computers... effff PhotoShop!

But Windows 11 is not an OS... it's an AS. An Advertising System. That's it! Effff Microsoft. In the past I had Linux boxes, Fedora 8, CentOS 4. So I'm back at Linux... Fedora 42 KDE.

Install GIMP... 3.0.6... What the Hell?

Default is cut&paste is as a new layer and when you want to move it, it selects the top layer!!! You got to go Shift click so to move the layer you ARE ON???

The tool tips are mad and there's no way to disable them... if GTK 3 is crap... you don't use it. You're going to irreversibly damage your installed base.

I'm trying to do a simple livery a racing game and in 2.1 it would 4 to 6 hours. I've just wasted the whole day and I'm barely halfway. 3... is a regression.


I apologize but I'm not a happy camper right now.

Print this item

Python Install gimp user manual locally on Linux
Posted by: NetWeeZurd - 12-20-2025, 11:35 PM - Forum: Linux and other Unixen - Replies (1)

Hi guys,

I run Fedora.

I have Gimp 3.0.6 installed through the DNF package manager.

Under Fedora... probably most RPM based distribution, there is no Gimp-Help package.
Through the KDE GUI software installer, Discover, there is a FlatPack GIMP User Manual but, 1- it's 2.1 and 2- Gimp cannot find it.

So I downloaded gimp-help-3.0.0.tar.bz2, decompressed it but where do I need to put it so Gimp sees it?


Thank You !

Print this item

  Paint bucket acts "weird"
Posted by: PieterJW - 12-20-2025, 11:10 AM - Forum: General questions - Replies (7)

GIMP 3.0.6 on Linux Mint 21.3 Cinnamon
Using the paint bucket tool, sections that were already filled change color.
I made an image with several sections that I want to fill with the paint bucket. 
I filled several sections with red without a problem.
I start filling the next sections with pink (see settings below) When I fill the first empty section with pink, no problem. When I click the second empty section, it is filled with pink, but the first pink section changes to red. When I click the third section, the second changes to red as well. When I click the second section again, that one turns pink but the third one goes to red.
The sections are closed; there's no "leakage".
I tried closing and restarting the program, but that didn't change anything.

I hope this description makes sense. I wanted to attach a video but that didn't work.

Does anybody know why this happens and - more importantly - how to prevent this?

Foreground color: pink
Background color: white 
Tool settings:
FG color: pink
BG color: white
Mode: normal
Fill type: FG color fill
Affected area: fill similar colors
Finding similar colors: Fill transparent areas
Threshold: 116,1
Fill by: composite

Thank you.

Print this item

  Very, very nice startup times in new RC2!
Posted by: mrkid - 12-18-2025, 04:37 PM - Forum: General questions - No Replies

Just thanks. Good improvement!

Print this item

  Why does HTML/css scale images better than Gimp?
Posted by: KevinJones - 12-16-2025, 07:25 PM - Forum: General questions - Replies (1)

Say I have a photo that is resolution 2000 x 1500. Now say I put it in a web page, and scale it using css to 600 x 400. NOW, say that I take that same 2000 x 1500 image and scale it down to 600 x 400 using Gimp or even Photoshop. If I take the second image, put it in a web page and display it at its 600 x 400 width, and compare it with the first larger image that was scaled using only css, the second one ALWAYS looks fuzzier. Also, the colors will often also look diminished.

So, my question is, why can't Gimp or Photoshop do as good of a job scaling images as HTML/css can?

Print this item

  gexport: Make-like tool for automated complex exporting
Posted by: JohnHammersley - 12-16-2025, 03:42 PM - Forum: Extending the GIMP - No Replies

Hi, I've just open-sourced an internal tool called gexport. It's a Make-like tool for GIMP that exports multiple images from complex GIMP projects:
[Image: gexport-diagram.webp]
I'm really keen to see if others will find it useful. You can get it from GitHub at this link: https://github.com/petersuttondev/gexport

Thanks.

Print this item

Question Inside drop shadow maybe???
Posted by: Lebatron - 12-15-2025, 06:10 PM - Forum: General questions - Replies (2)

   
I need help guys. I've searched a ton on Youtube and I don't even know what to call the feature I'm trying to discover. What you see below is from a board game I'm making to use on Vassal. As Germany conquers territory, I can change the color to match. What I can't figure out to do is to find a way for GIMP to autogenerate that fuzzy darker border color you see on the original map. I can use airbrush and follow the edge of the border myself to make them, however I don't want to do this 300 times. It's tedious and it would look sloppy. Surely, there is a way to do some kind of drop shadow kind of thing, but on the inside. Every Youtube was all about the exterior. 

I tried a few zones using an airbrush, but it just could not replicate it nicely. The original has a nice fade going on while my airbrush doesn't fade anything like that. It's to abrupt when it reaches the width I set. I suppose that's another question on how to configure an airbrush to do that. The technique I'm looking for would not need the airbrush anyway since it should simply fill the border for me with the color I choose and width and fade.

Print this item

  Help with colour matching
Posted by: Tygra - 12-13-2025, 02:01 PM - Forum: General questions - Replies (1)

Hi there,

I am practising with colour matching and I would like your opinion on whether I am getting it right or not? Sometimes I think it matches okay and sometimes I am thinking have not got it right. It can be quite confusing.

I have attached my image and the original image.

I am thinking is there too much magenta in the image? But the background is very magenta. Thank you in advance for your opinions.



Attached Files Thumbnail(s)
       
Print this item

  Straighten your image before Gimp
Posted by: ESH - 12-12-2025, 04:06 PM - Forum: General questions - Replies (4)

I worked with a large file in Gimp 3.2 RC1 - 6000 x 4000 pxxpx (not nice to Gimp but experimental).

Then I decided to straighten 5 layers 1.59 degrees clockwise around the center.

Shortly after I regretted not to have saved the image right before initiating the rotation (the current version could be a number of important steps old, so I decided to let the rotation in progress run). For the same reason Task Manager was not an option.
The rotation with the default Cubic interpolation took 1.5 hours!

Is anybody aware of - if I did something wrong? If so, how can this be done at a normal execusion speed - like at most 1 second in my old Photoshop CS5?

Is any plugin available for such manipulations?

I am of course a beginner with Gimp - and despite this waste of my time a kind of affection is developing. At least this product is open and free Heart

Print this item

  GIMP 3.x Python Plugin Issue: Reliable Program Exit and Image Closing
Posted by: not_a_real_gimp - 12-12-2025, 11:26 AM - Forum: Scripting questions - Replies (1)

Hello GIMP Community,

I am facing an issue in a GIMP 3.0 Python plugin: reliably closing the program and the last active image when the sequential workflow is finished.

My script is running in the GUI Mode, and I need to perform two actions in order:

  1. Close the last open image container.
  2. Force GIMP to quit the application entirely.
The old methods from v2 do not work anymore and I am unsure if what I am trying to achieve is actually possible.

Here is my script so far (German annotations):

Code:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import gi
gi.require_version('Gimp', '3.0')
gi.require_version('GimpUi', '3.0')
from gi.repository import Gimp, GimpUi, GObject, GLib, Gio
import os
import json
import tempfile
import traceback

# Pfad für die temporäre Konfigurationsdatei
CONFIG_PATH = os.path.join(tempfile.gettempdir(), 'gimp_spore_workflow_config.json')

class ExportAndNextWorkflow(Gimp.PlugIn):

   def do_query_procedures(self):
       return ['python-fu-export-and-next']

   def do_set_i18n(self, procname):
       return False, 'gimp30-python', None

   def do_create_procedure(self, name):
       procedure = Gimp.ImageProcedure.new(
           self, name,
           Gimp.PDBProcType.PLUGIN,
           self.run, None
       )

       procedure.set_image_types("*")
       procedure.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE)
       procedure.set_menu_label("1. Exportieren & Nächstes Bild")
       procedure.add_menu_path('<Image>/Auswahl/')

       procedure.set_documentation(
           "Exportiert die Auswahl, speichert W/H und lädt das nächste Bild.",
           "Exportiert die aktuelle Auswahl und bereitet den nächsten Schritt vor.",
           name
       )
       procedure.set_attribution("Author", "Author", "2024")

       return procedure

   # --- HILFSFUNKTIONEN ---

   def load_config(self):
       if os.path.exists(CONFIG_PATH):
           try:
               with open(CONFIG_PATH, 'r') as f:
                   return json.load(f)
           except:
               pass
       return None

   def save_config(self, width, height, current_path=None):
       data = {'width': int(width), 'height': int(height)}
       try:
           existing_data = self.load_config()
           if existing_data:
               data.update(existing_data)

           if current_path is not None:
               data['last_path'] = current_path

           with open(CONFIG_PATH, 'w') as f:
               json.dump(data, f, indent=4)
       except Exception as e:
           pass

   def get_next_file(self, current_path):
       directory = os.path.dirname(current_path)
       basename = os.path.basename(current_path)

       extensions = ('.jpg', '.jpeg', '.png', '.tif', '.tiff', '.xcf')
       files = [f for f in os.listdir(directory) if f.lower().endswith(extensions)]
       files.sort()

       try:
           index = files.index(basename)
           if index + 1 < len(files):
               return os.path.join(directory, files[index + 1])
       except ValueError:
           pass

       return None

   # --- HAUPT-RUN-FUNKTION ---

   def run(self, procedure, run_mode, image, n_drawables, drawables, config, run_data=None):

       # 0. Initialisierung & Auswahlprüfung
       selection = image.get_selection()
       success, non_empty, x1, y1, x2, y2 = selection.bounds(image)

       if not non_empty:
           error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(), "Keine Auswahl vorhanden.", 0)
           return procedure.new_return_values(Gimp.PDBStatusType.CALLING_ERROR, error)

       target_w = x2 - x1
       target_h = y2 - y1

       # 1. Pfad ermitteln
       current_path = None
       current_file = image.get_file()

       if current_file is not None:
           current_path = current_file.get_path()
       else:
           config_data = self.load_config()
           if config_data and 'last_path' in config_data:
               current_path = config_data['last_path']

       if current_path is None:
           error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(),
                                           "Bild hat keinen Dateipfad (Konfiguration leer).", 0)
           return procedure.new_return_values(Gimp.PDBStatusType.EXECUTION_ERROR, error)

       directory = os.path.dirname(current_path)
       basename = os.path.splitext(os.path.basename(current_path))[0]

       # Zielordner für Exporte definieren
       target_dir = os.path.join(directory, "Auswahlen")

       # --- TEIL A: EXPORTIEREN ---

       try:
           # 2. Zielordner erstellen (falls nicht vorhanden)
           if not os.path.exists(target_dir):
               os.makedirs(target_dir)

           # 3. Nächste freie Export-Nummer finden (suche im Zielordner)
           number = 1
           while True:
               new_filename = f"[{number}] {basename}.jpg"
               new_filepath = os.path.join(target_dir, new_filename)
               if not os.path.exists(new_filepath):
                   break
               number += 1

           # 4. Auswahl kopieren, neues Bild erstellen, speichern
           drawable = image.get_layers()[-1]
           Gimp.edit_copy([drawable])
           new_image = Gimp.edit_paste_as_new_image()

           # Speichere direkt in den Auswahlen-Ordner
           new_file = Gio.file_new_for_path(new_filepath)
           Gimp.file_save(Gimp.RunMode.NONINTERACTIVE, new_image, new_file)
           new_image.delete()

           # 5. Auswahlgröße speichern (für Script 2)
           self.save_config(target_w, target_h)

       except Exception as e:
           if 'new_image' in locals():
               try: new_image.delete()
               except: pass

           error_msg = f"Fehler beim Export: {str(e)}\n{traceback.format_exc()}"
           error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(), error_msg, 0)
           return procedure.new_return_values(Gimp.PDBStatusType.EXECUTION_ERROR, error)

       # --- TEIL B: NÄCHSTES BILD LADEN (MIT ENDPRÜFUNG) ---

       # 6. Nächstes Bild ermitteln
       next_path = self.get_next_file(current_path)

       if not next_path:
           # ENDE DER SEQUENZ ERREICHT!

           # Letzten Pfad zurücksetzen.
           self.save_config(target_w, target_h, current_path=None)

           # Aktuelles Bild aus der Anzeige entfernen
           image.delete()

           # GIMP 3.0 Methode zum Aufruf der PDB-Prozedur "gimp-quit"
           try:
               # Korrektur: Verwendung von Gimp.TYPE_INT anstelle von GObject.TYPE_INT
               Gimp.plug_in_manager_run(
                   "gimp-quit",
                   Gimp.RunMode.NONINTERACTIVE,
                   GObject.Value.new(Gimp.TYPE_INT, 0)
               )
           except Exception as e:
               Gimp.message(f"WARNUNG: GIMP 3.0 Quit-Aufruf fehlgeschlagen: {str(e)}")

           # Korrigierter Rückgabestatus:
           return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, None)

       try:
           # 7. Normaler Ablauf: Bild laden und Pfad speichern
           new_gfile = Gio.file_new_for_path(next_path)
           new_image = Gimp.file_load(Gimp.RunMode.NONINTERACTIVE, new_gfile)

           self.save_config(target_w, target_h, current_path=next_path)

           # 8. Anzeige erstellen und altes Bild schließen
           Gimp.Display.new(new_image)
           image.delete()
           Gimp.displays_flush()

       except Exception as e:
           error_msg = f"Fehler beim Wechseln: {str(e)}\n{traceback.format_exc()}"
           error = GLib.Error.new_literal(Gimp.PlugIn.error_quark(), error_msg, 0)
           return procedure.new_return_values(Gimp.PDBStatusType.EXECUTION_ERROR, error)

       # Korrigierter Rückgabestatus:
       return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, None)

Gimp.main(ExportAndNextWorkflow.__gtype__, sys.argv)


Does anyone have an idea whether what I am trying to do is possible?

Print this item