Posts: 3
Threads: 1
Joined: Mar 2023
Reputation:
0
Operating system(s):
- Windows Vista or 7, 8, 10 (64-bit)
Gimp version: 2.10
Hi,
Is there anyway to get the selected pixel count (as displayed in the histogram) into the clipboard, so I can use Autokeypad to put it into a spreadsheet?
Cheers
Posts: 6,414
Threads: 279
Joined: Oct 2016
Reputation:
566
Operating system(s):
Gimp version: 3.00RC1
03-10-2023, 08:04 AM
(This post was last modified: 03-10-2023, 08:19 AM by Ofnuts.)
Open the python console and enter this:
Code:
image=image=[x for x in gimp.image_list() if image.ID==5][0]
Where you replace "5" by the image ID, which is the number you find in the title bar:
Then to get your pixel count:
Code:
pdb.gimp_drawable_histogram(image.active_layer,0,0.,1.)[3]
If you want to redo this for another selection, just repeat that last line after changing the selection, since the image will be the same.
To be a bot more complete, in the histogram call, the args are:
- The layer/drawable for which you want statistics
- A channel identifier (Value (maxOf(R,G,B), Red, Green, Blue, Alpha, Luminance)
- The minimum value you want inlcuded
- The maximum value you want inlcuded (so you define a range between these two), like with the handles in the
- histogram display
The result is a list if numbers:
- Average value
- Standard deviation
- Median value
- Pixel count for the whole selection (range not taken in account)
- Pixels count for the pixels within range
- Ratio of the two previous values
So the code I gave you extracts the 4th value (index=3, since this is 0-based). The output of the API is in the [0..255] range instead of the [0. .. 1.0] range so you add a division by 255 if necessary.
It is of course also easy to format this output differently, and writing a script to write the values to file wouldn't be difficult.
Here is how the API and the GUI relate:
Posts: 3
Threads: 1
Joined: Mar 2023
Reputation:
0
Operating system(s):
- Windows Vista or 7, 8, 10 (64-bit)
Gimp version: 2.10
03-12-2023, 12:13 AM
(This post was last modified: 03-12-2023, 01:54 PM by Ofnuts.)
(03-10-2023, 08:04 AM)Ofnuts Wrote: Open the python console and enter this:
Code:
image=image=[x for x in gimp.image_list() if image.ID==5][0]
Where you replace "5" by the image ID, which is the number you find in the title bar:
Then to get your pixel count:
Code:
pdb.gimp_drawable_histogram(image.active_layer,0,0.,1.)[3]
If you want to redo this for another selection, just repeat that last line after changing the selection, since the image will be the same.
To be a bot more complete, in the histogram call, the args are:
- The layer/drawable for which you want statistics
- A channel identifier (Value (maxOf(R,G,B), Red, Green, Blue, Alpha, Luminance)
- The minimum value you want inlcuded
- The maximum value you want inlcuded (so you define a range between these two), like with the handles in the
- histogram display
The result is a list if numbers:
- Average value
- Standard deviation
- Median value
- Pixel count for the whole selection (range not taken in account)
- Pixels count for the pixels within range
- Ratio of the two previous values
So the code I gave you extracts the 4th value (index=3, since this is 0-based). The output of the API is in the [0..255] range instead of the [0. .. 1.0] range so you add a division by 255 if necessary.
It is of course also easy to format this output differently, and writing a script to write the values to file wouldn't be difficult.
Here is how the API and the GUI relate:
Thanks For That Ofnuts.
I've got it to work, but not with
Code:
image=image=[x for x in gimp.image_list() if image.ID==5][0]
making sure the ID matches the Gimp Image number - i keep getting the error :-
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'image' is not defined
But I am only using one image, so I can just use
Code:
theImage = gimp.image_list()[0]
Also is there anyway I can get this number directly into the clipboard?
Cheers
Steven
Posts: 6,414
Threads: 279
Joined: Oct 2016
Reputation:
566
Operating system(s):
Gimp version: 3.00RC1
03-12-2023, 02:03 PM
(This post was last modified: 03-12-2023, 03:50 PM by Ofnuts.)
(03-12-2023, 12:13 AM)steven Brazzale Wrote: Thanks For That Ofnuts.
I've got it to work, but not with
Code:
image=image=[x for x in gimp.image_list() if image.ID==5][0]
making sure the ID matches the Gimp Image number - i keep getting the error :-
Traceback (most recent call last):
File "<input>", line 1, in <module>
NameError: name 'image' is not defined
But I am only using one image, so I can just use
Code:
theImage = gimp.image_list()[0]
Also is there anyway I can get this number directly into the clipboard?
Cheers
Steven
1) Sorry, typo, only one image=:
Code:
image=[x for x in gimp.image_list() if image.ID==5][0]
2) Yes, you can hardcode gimp.image_list()[0] but you'll get burned sooner or later. Of course if you do a true plugin instead of pasting code in the Python console you get the image passed as a plugin parameter.
3) Possibly, but this is heavily system dependent. On Linux, there is a CLI utility to stuff things in the clipboard and it can be called from Python. I don't know if it is as simple in Windows (or even possible). But IMHO you could skip the clipboard and write directly in a file.
Posts: 3
Threads: 1
Joined: Mar 2023
Reputation:
0
Operating system(s):
- Windows Vista or 7, 8, 10 (64-bit)
Gimp version: 2.10
03-14-2023, 05:36 AM
(This post was last modified: 03-14-2023, 05:37 AM by steven Brazzale.)
[quote pid='33676' dateline='1678629780']
Thanks Ofnuts
[/quote]
|