| Welcome, Guest |
You have to register before you can post on our site.
|
| Forum Statistics |
» Members: 5,056
» Latest member: nomasai3
» Forum threads: 7,773
» Forum posts: 42,208
Full Statistics
|
| Latest Threads |
Best way to recolor this ...
Forum: General questions
Last Post: IndiePubber
2 hours ago
» Replies: 0
» Views: 9
|
Photobooth "look" - pytho...
Forum: Extending the GIMP
Last Post: gasMask
Yesterday, 02:45 PM
» Replies: 2
» Views: 557
|
Help with making this eff...
Forum: General questions
Last Post: Tygra
Yesterday, 01:37 PM
» Replies: 4
» Views: 562
|
Gimp 3.x scanner xsane pl...
Forum: Gimp 2.99 & Gimp 3.0
Last Post: jsamb
Yesterday, 10:05 AM
» Replies: 15
» Views: 14,956
|
Installing in a secure en...
Forum: Windows
Last Post: ThecknoDecker
01-09-2026, 06:18 PM
» Replies: 0
» Views: 84
|
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
|
|
|
| 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?
|
|
|
| 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:
- Close the last open image container.
- 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?
|
|
|
| Gimp larger than Screen |
|
Posted by: sallyanne - 12-12-2025, 07:39 AM - Forum: General questions
- Replies (2)
|
 |
I have restarted it and checked preferences incase they got changed.
I cannot see the status bar on the bottom of gimp or the bottom of my dialogs that are at the bottom.
It originally did what I wrote above when I opened it today. After restarting I can barely see the top menu bar and the bar above where it has the image name.
What is wrong - what should I do?
Oh, my version is 3.0.4 portable clang. This only happened today
EDIT:- I was able to pull it down to see the top bar so I could turn it off again
EDIT x2:- Opened it again and all is ok now while Gimp is maximised. When I minimise it A few things I cannot see still, like the bottom status bar and bottom of dialogs along the bottom of Gimp
|
|
|
| Can't Find where to install Local Help Manual |
|
Posted by: scastle - 12-12-2025, 02:42 AM - Forum: OSX
- Replies (1)
|
 |
Im on a Mac and I just installed Gimp 3. And it states The GIMP user manual is not installed in your language."
"You may either install the additional help package or change your preferences to use the online version."
but the only English manual I see is a windows .exe installer, Where's an English Mac version?
Thanks
Steve
|
|
|
| Transparent Background Adds to Dimensions of Exported PNG |
|
Posted by: Kramskry - 12-11-2025, 04:15 PM - Forum: General questions
- Replies (2)
|
 |
Hi Everyone,
I have been trying to figure this out for 2 days, and have come up short, so I created an account to hopefully get some help. I am new to GIMP and have been using it to extract a little image from a larger image. I use Linux Mint Cinnamon.
I extracted the image, added an alpha layer, made the background transparent, and extracted my image as a PNG with the "save background color" option unchecked. The png properly shows only the image in the thumbnail of my file browser (no background), but when I right click on the file and view the properties it shows the total width x height of the file as including the transparent background from the canvas in GIMP. To illustrate, the image is roughly 360x350 pixels, but the total W x H is 1344x768.
The problem arises because I want to change the image size, but when I try to scale it GIMP scales based on the size of the canvas, not the size of the image. I found a workaround where I changed the Canvas Size to match roughly what the image is, so then when I use Scale Image my actual image is closer to what I want. There is still a small amount of error in this method because the whole canvas size is slighly bigger than my image.
Is there an an answer to my question? I spent so much time searching, but all I could find was people with problems of a background showing in their exported images and badly written ai articles outlining bare minimum basics. I went through the GIMP documentation, but I didn't see any mentioned regarding file dimensions and how they work when exporting with GIMP. To me, it seems like a transparent background would not be included in dimensions of a PNG because it does not exist. Maybe it does exist and the dimensional data is included in the file itself, but not rendered when used? I think I am fundamentally misunderstanding something.
Is the solution I came up with the best way to accomplish what I need?
|
|
|
|