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

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 4,869
» Latest member: roymixon
» Forum threads: 7,659
» Forum posts: 41,682

Full Statistics

Latest Threads
Copy and paste in pdf (em...
Forum: General questions
Last Post: brucemc777
3 hours ago
» Replies: 1
» Views: 124
Install Resynthesizer
Forum: General questions
Last Post: Dunham
4 hours ago
» Replies: 7
» Views: 116
Apply filter as brush?
Forum: General questions
Last Post: Tas_mania
5 hours ago
» Replies: 1
» Views: 56
Resynthesizer 3 vs Gimp 3...
Forum: Installation and usage
Last Post: rich2005
10 hours ago
» Replies: 1
» Views: 56
Opening a RAW Image in Gi...
Forum: General questions
Last Post: Dunham
10-16-2025, 11:32 AM
» Replies: 4
» Views: 232
Full screen from starting
Forum: Gimp 2.99 & Gimp 3.0
Last Post: rich2005
10-16-2025, 11:17 AM
» Replies: 3
» Views: 2,305
Text on a Path....
Forum: General questions
Last Post: rich2005
10-16-2025, 07:47 AM
» Replies: 3
» Views: 221
Anyone working on video g...
Forum: Watercooler
Last Post: rasterraymond
10-15-2025, 09:22 PM
» Replies: 2
» Views: 188
Gimp 3.0.6 Appimage
Forum: Alternate Gimp packagings
Last Post: 5354photos
10-15-2025, 01:59 PM
» Replies: 2
» Views: 259
plugins not showing
Forum: Extending the GIMP
Last Post: MrsP-from-C
10-15-2025, 08:04 AM
» Replies: 4
» Views: 406

 
  transform tools with alpha images
Posted by: Brownies323 - 03-26-2025, 09:36 AM - Forum: Gimp 2.99 & Gimp 3.0 - Replies (2)

hello
i have used gimp for as long as i can remember, but this version 3 is giving me an issue i cant figure out how to fix

i use multiple layers often and using "color to alpha" so i have transparent backgrounds etc...

up til now its never caused a problem... so here what i do
add alpha channel - erase parts of some images,  then color to alpha... ok all good up til this point... now i use transform tools to move, resize and tweak images etc...

so example, once i have used "color to alpha" i select the "scale" tool
soon as i select the layer with it, its like a revert back to pre "color to alpha" but, this is only while the tool is selected, the image still has the transparency once task is done, but how do i choose to not see this while transforming??  version 2.10 did not act like this
for the life of me i cant see any settings to change this

i use the tools so i can see where i am placing images and overlaying etc... with this showing i can not see

please help???



Attached Files Thumbnail(s)
   
Print this item

Sad Filters don't follow a global image resize operation
Posted by: JoeMS2025 - 03-26-2025, 09:29 AM - Forum: Gimp 2.99 & Gimp 3.0 - Replies (2)

Hi all,

I'm having an odd issue with GIMP 3.0.2 which previously made me revert to GIMP 2.8 several times, but what good is in sticking with outdated stuff? And my Fedora package manager just updated GIMP to 3 again. I find it too stressful to force it back to 2.8 all the time. So I decided to try and find the root cause of what I am observing here.
For system parameters: latest-and-greatest GIMP 3.0.2 on an equally up-to-date Fedora 41 Workstation, running on a Framework Laptop 16 with AMD Ryzen 7840HS and 64GB of RAM. Not that it matters much, I would probably see the same on any other machine (but haven't tried, to be honest).
Now for the issue. To demonstrate, I have created a 400px by 400px image:

   

I am selecting an area in the bottom right area:

   

To this selection, I apply the Gaussian Blur filter:

   

Now I use the menu item Image -> Scale Image for 300 by 300 pixels. What happens is really disturbing. The image is resized as expected, however, the blurred area is not resizing likewise. It stays where it was:

   

And it also blurs the area that it now covers!
I saved the  resulting image so here it is again:

   

There is no layer involved in this besides the root layer. If I save, close, and reopen the image, and apply Image -> Scale Image from 400x400 to 300x300, of course the blurred region eventually is moving along as I would expect it to do.
So it looks like GIMP remembers filters and their positions, and keeps them (+ their positions and sizes) beyond resizing the image, for at least as long as the same image is still open. Like it keeps filter operations on a hidden layer that does not properly resize with the image. It forgets about that only when the image is closed and re-opened. What's the point?

I have checked other filters and found similar behavior. However, if I use something like Color -> Invert on the selection and then Image -> Scale Image, the inverted region is in the expected position. For what I know right now, it seems like it only affects filters.
GIMP 2.8 didn't do this, and that's why I stayed with it for so long, and am still somewhat tempted to go back as this is really annoying.

Does anybody know what this is about and how it can be mitigated?

Thanks a ton!
Cheers, Joe

Print this item

Question batch scale down images if largest dimension is greater than X
Posted by: karaxus - 03-26-2025, 09:27 AM - Forum: General questions - Replies (2)

Hi all,

I am trying to scale down a number of images (~ 100) of different dimensions down to a specific maximum size (for example 1920px as width).

I searched for this but didn't find any plugin or so which allows me to do this.

I tried using Batcher but it's missing an constraint option on image dimensions.

I am not an expert user of gimp, but maybe there is some script-fu (?) I am missing for solving this issue.

Thank you all in advance for your help.

Print this item

  Wrong version on 3.0.2 splash image
Posted by: NickJP - 03-26-2025, 06:21 AM - Forum: Gimp 2.99 & Gimp 3.0 - Replies (3)

Not that it really matters, but I just upgraded from 3.0.0 to 3.0.2 (Windows) and noticed that the splash graphic that displays on screen while the program is loading still says 3.0.0 in its bottom right hand corner...

Print this item

Photo GIMP PDFs have transparency
Posted by: waltonm - 03-25-2025, 06:24 PM - Forum: General questions - Replies (13)

I am using GIMP 3.0.0 on Windows 10 system

I made a PDF (Export as PDF) from a multilayered file. It had transparency (Acrobat > Preflight > List transparent objects). I flattened the file, exported as PDF, and it had transparency.  I exported the flattened file to JPG, then exported the JPG to PDF, and it had transparency!

To further focus in on the potential solution or problem, I:

  1. created a JPG in XnView
  2. opened it in GIMP, then exported it as a JPG
  3. closed the file, then opened the GIMP produced JPG
  4. exported it to PDF, using default settings
  5. checked the transparency in Acrobat: "Transparency used." (A, in attachment)
 

To test this, I repeated the steps using Affinity Photo, I:
  1. used the JPG from XnView
  2. opened it in Affinity Photo, then exported it as a JPG
  3. closed the file, then re-opened the Affinity Photo produced JPG
  4. exported it to PDF/X-4, setting it to permit transparency/layers, if there is any
  5. checked the transparency in Acrobat: "No problems found." (B in attachment)

I have repeated this in GIMP using Print > Print to doPDF, cutePDF, AdobePDF, all with no transparency. 

Some printers will reject PDFs with transparency.  I am trying to produce a PDF from GIMP with no transparency and no other programs (like Adobe PDF).  Is that possible?

Walton



Attached Files Thumbnail(s)
   
Print this item

  How do I move my toolbox?
Posted by: harrisongrey - 03-25-2025, 06:15 PM - Forum: Linux and other Unixen - Replies (4)

On Ubuntu, currently running 3.0.2.  I had to fresh install to get to .2 otherwise it kept crashing on brush selection, but in doing so it wiped my preferences.  I'm just trying to figure out how to get the toolbox onto the right side of the screen.  Used to be you could turn off single-window mode, move the toolbox window, and then turn back on single-window mode and it would save the position, but that doesn't appear to work anymore.  Anyone know the current method?

Print this item

  Did GIMP 3.0.2 Break Plugins Again?
Posted by: n3306tx - 03-25-2025, 04:10 AM - Forum: Scripting questions - Replies (3)

Apparently GIMP 3.0.0 had an issue with the initial installation file where the python console was missing and python plugins were affected and not showing in the menus.  GIMP 3.0.1 was released and fixed this problem.  GIMP 3.02 with additional bug fixes was released and now python plugins no longer are showing in the menu.  I reinstalled GIMP 3.0.1 and the plugins are back in the menus.

Print this item

  Alternative to Drawable.get_tile() for Gimp 3?
Posted by: joeyeroq - 03-25-2025, 01:21 AM - Forum: Scripting questions - Replies (6)

I'm trying to port a Gimp 2 script to Gimp 3 and got most of it figured out by trying stuff out in the python console.


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

import time
from gimpfu import *

def sprites2layers(image, layer, sample, minimal_dimensions):
    '''
    "Separates objects on one layer to their own layer. Handy for Spritesheets"
    
    Parameters:
    image -- The current image.
    layer -- The layer of the image that is selected.
    sample -- sample every nth pixel of layer tile
    minimal_dimensions -- minimal dimension of object to be placed in "objects" layer group
    '''
    # Start timer
    time_start = time.time()

    # Check image type (RGB/Greyscale or Indexed) and if layer has alpha, if not stop this script with a warning
    no_alpha_warning='This layer has no alpha, please add an alpha channel for this script to work'
    if image.base_type == 0:
        image_mode = 'RGB'
        if layer.bpp != 4:
            gimp.message(no_alpha_warning)
            return
    if image.base_type == 1:
        image_mode = 'Greyscale'
        if layer.bpp != 2:
            gimp.message(no_alpha_warning)
            return
    if image.base_type == 2:
        image_mode = 'Indexed'
        if layer.bpp != 2:
            gimp.message(no_alpha_warning)
            return

    tile_width = gimp.tile_width()
    tile_height = gimp.tile_height()
    layer_copy = layer.copy()
    image.add_layer(layer_copy)

    # Context setters for pdb.gimp_image_select_contiguous_color()
    pdb.gimp_context_set_antialias(0)
    pdb.gimp_context_set_feather(0)
    pdb.gimp_context_set_sample_merged(0)
    pdb.gimp_context_set_sample_criterion(0)
    pdb.gimp_context_set_sample_threshold(1)
    pdb.gimp_context_set_sample_transparent(0)

    # Counters for objects in layer groups
    counter_good = 1
    counter_bad = 1

    # Tile rows and columns of layer_copy
    tile_rows = int( (layer_copy.height + tile_height - 1) / tile_height)
    tile_cols = int( (layer_copy.width  + tile_width - 1) / tile_width)

    # create an 'off-screen' copy of layer_copy (not added to the canvas)
    layer_offscreen = layer_copy.copy()

    # Loop over tiles of layer_offscreen
    for tile_row in range(tile_rows):
        for tile_col in range(tile_cols):
            Tile = layer_offscreen.get_tile(False, tile_row, tile_col)

            # Loop over pixels of tiles
            for tile_y in range(0, Tile.eheight, sample):
                for tile_x in range(0, Tile.ewidth, sample):
                    pixel = Tile[tile_x, tile_y]

                    # Split components of imag_mode to get the alpha
                    # RGBA image
                    if image_mode == 'RGB':
                        R,G,B,A = Tile[tile_x, tile_y]
                    # Greyscale or Indexed image
                    if image_mode == 'Greyscale' or image_mode == 'Indexed':
                        I,A = Tile[tile_x, tile_y]

                    # If pixel is not completely transparent select it and neighbouring non-transparent pixels
                    if ord( A ) > 0:
                        layer_pixel_pos_x = tile_col * tile_height + tile_x
                        layer_pixel_pos_y = tile_row * tile_width + tile_y
                        pdb.gimp_image_select_contiguous_color(image, 2, layer_copy, layer_pixel_pos_x, layer_pixel_pos_y)

                        # Create a layer for an object and assign it to 'small objects' layer group or
                        # 'objects layer group' based on criteria "min_dimensions"
                        object_layer = layer_copy.copy()
                        x1, y1, x2, y2 = layer_copy.mask_bounds

                        # 'small objects' layer group
                        if x2 - x1 < minimal_dimensions and y2 - y1 < minimal_dimensions:
                            if counter_bad == 1 and (image_mode == 'RGB' or image_mode == 'Greyscale'):
                                layer_group_bad = pdb.gimp_layer_group_new(image)
                                layer_group_bad.name = 'small objects'
                                image.add_layer(layer_group_bad)
                            object_layer.name = "trash {:04d} ({:d}, {:d}, {:d}, {:d})".format(counter_bad, x1, y1, x2 - x1, y2 - y1)
                            counter_bad += 1
                            if image_mode == 'RGB' or image_mode == 'Greyscale':
                                image.active_layer = layer_group_bad
                            # Add object to layer_group_bad at the last position
                            pdb.gimp_image_insert_layer(image, object_layer, layer_group_bad, len(layer_group_bad.layers))

                        # 'objects' layer group
                        else:
                            if counter_good == 1 and (image_mode == 'RGB' or image_mode == 'Greyscale'):
                                layer_group_good = pdb.gimp_layer_group_new(image)
                                layer_group_good.name = 'objects'
                                image.add_layer(layer_group_good)
                            object_layer.name = "object {:04d} ({:d}, {:d}, {:d}, {:d})".format(counter_good, x1, y1, x2 - x1, y2 - y1)
                            counter_good += 1
                            if image_mode == 'RGB' or image_mode == 'Greyscale':
                                image.active_layer = layer_group_good
                            # Add object to layer_group_good at the last position
                            pdb.gimp_image_insert_layer(image, object_layer, layer_group_good, len(layer_group_good.layers))


                        # Add object to active layer which is one of the two layer groups
                        #image.add_layer(object_layer)
                        # "Auto crop" object layer
                        object_layer.resize(x2 - x1, y2 - y1, -x1, -y1)

                        # Remove/erase selection from layer_copy
                        image.active_layer = layer_copy
                        pdb.gimp_edit_clear(layer_copy)

                        # Update tile, by updating layer_offscreen, by copying layer_copy
                        layer_offscreen = layer_copy.copy()
                        Tile = layer_offscreen.get_tile(False, tile_row, tile_col)

    # Remove layer_copy and layer_offscreen from canvas and memory
    image.remove_layer(layer_copy)
    del(layer_offscreen)

    # Reset context settings to their default values.
    pdb.gimp_context_set_defaults()

    # End timer and display number of objects, small objects and timer seconds up to milliseconds in error console
    time_end = time.time()
    gimp.message('INFO:\n-{:d} objects found\n'.format(counter_good - 1) +
                 '-{:d} small objects found\n'.format(counter_bad - 1) +
                 '-time taken: {:.3f} seconds'.format(time_end - time_start))

### Parameters
imageParm  = (PF_IMAGE   , "image"             , "Input image"           , None)
layerParm  = (PF_DRAWABLE, "layer"             , "Input layer"           , None)
sampleParm = (PF_INT     , "sample"            , "Sample every nth pixel", 1   )
mindimParm = (PF_INT     , "minimal_dimensions", "Minimal dimension"     , 10  )

### Registrations
name       = "mich-sprites-2-layers"
blurb      = "Objects to layers"
help       = "Separates objects on one layer to their own layer. Handy for Spritesheets"
author     = "Mich"
copyright  = "Mich"
date       = "2018-01-28"
menu_item  = "sprites2layers..."
imagetypes = "*"
params     = [imageParm, layerParm, sampleParm, mindimParm]
results    = []
function   = sprites2layers
menupath   = "<Image>/Layer"

### Registrations
register(
    name      ,
    blurb     ,
    help      ,
    author    ,
    copyright ,
    date      ,
    menu_item ,
    imagetypes,
    params    ,
    results   ,
    function  ,
    menupath
)

main()


I've hit a snag with lines 65 and 129 with "Tile = layer_offscreen.get_tile(False, tile_row, tile_col)". 
in Gimp 3 "drawable.get_tile()" doesn't exist, what is the alternative to this?

Print this item

  Keep exif-orientation on import
Posted by: Pflichtfeld - 03-24-2025, 10:44 PM - Forum: General questions - Replies (9)

Hi guys,
Problem: upright picture (portrait) of a door. Exif in original jpg is right,top.
I send it to gimp. The door now is shown in landscape, the exif now is changed to top,left.
I'm not sure, but maybe once there was a popup how to threat orientation of origin.
But now this popup is gone and I cannot find the option to change this behaviour.
Any help?

Print this item

  menurc file problem with Gimp 3
Posted by: migf1 - 03-24-2025, 06:04 PM - Forum: Gimp 2.99 & Gimp 3.0 - Replies (1)

Hey all,

I tried on Reddit yesterday but no-one replied, I hope someone can help here.

When I installed Gimp 3.0.1 along side my existing Gimp 2 installation on Windows 10, the Gimp 3 installer picked up all*rc files from my Gimp 2 installation, however when I deleted the menurc file from Gimp 3's path (a.k.a "C:\Users\...\Appdata\Roaming\Gimp\3.0") not only the keyboard shortcuts were not reset, but also the menurc file was not recreated in the above path (as it does in Gimp 2). I even tried copying another menurc file of mine, with different keyboard shortcuts, but Gimp 3 fails to read it.

In short, i'm stuck with the custom keyboard shortcuts I had in Gimp 2, and I cannot reset them in Gimp 3. Also, I'm not able to use any menurc file (I have a couple of them with different sets of custom keyboard shortcuts).

Is there any kind of cache file I need to delete or something? Is there any other path I need to look at, where Gimp 3 picks up the old menurc file from? How come it does not recreate the menurc file when I delete it?

Btw, the controllerrc file works fine (it gets recreated when I delete it, I can copy there other versions of it and Gimp 3 loads it, etc). Is there a bug specifically for the menurc file in Gimp 3?

Thanks in advance.

Print this item