04-26-2023, 09:24 PM
Hi,
To not unnecessarily bother the people on this forum, I tried to have ChatGPT put a script togther for me. But ChatGPT cannot manage, however hard I try to prompt it clearly.
Here's the question:
Write me a complete python script for the Gimp that does the following for me. I will start by manually activating the crop tool and marking an area for cropping. after I mark the area I want to start the script and then it does the following for me:
- Run a crop on the crop selection I already made;
- Adjust the longest side of the image to 2000 pixels, (and the other side to ratio)
- Reduce the saturation to 0
The best it came up with after about 10 attempts, was this:
This is sort of the best of the 10 worlds. Is it close? It is not working, that is for sure. The closest that I got to result, was the whole image resized and a black rectangle in the middle...
I have no idea why it needs to clear / select none / invert / cut / select none. I would just want to "hit enter", since I already made the selection ready for cropping. But I guess that does not exsist.
When I ask it why we need all those, GPT says that it is not needed, but then it puts it right back in every time. I guess this is called hallucinating.
I also tried with rectangular selection (instead of using the croptool), and crop from there, But I can't get that to work either.
How would you go about this?
Resizing, desaturation and registration are working.
Thanks, Thomas.
To not unnecessarily bother the people on this forum, I tried to have ChatGPT put a script togther for me. But ChatGPT cannot manage, however hard I try to prompt it clearly.
Here's the question:
Write me a complete python script for the Gimp that does the following for me. I will start by manually activating the crop tool and marking an area for cropping. after I mark the area I want to start the script and then it does the following for me:
- Run a crop on the crop selection I already made;
- Adjust the longest side of the image to 2000 pixels, (and the other side to ratio)
- Reduce the saturation to 0
The best it came up with after about 10 attempts, was this:
Code:
def crop_scale_desaturate(image, drawable):
# Crop the image to the current selection
pdb.gimp_edit_clear(drawable)
pdb.gimp_selection_none(image)
pdb.gimp_selection_invert(image)
pdb.gimp_edit_cut(drawable)
pdb.gimp_selection_none(image)
# Scale the image to a maximum size of 2000 pixels on the longest side
max_size = 2000
width, height = drawable.width, drawable.height
if width > height:
scale_width = max_size
scale_height = (height * max_size) // width
else:
scale_width = (width * max_size) // height
scale_height = max_size
pdb.gimp_image_scale(image, scale_width, scale_height)
# Desaturate the image
pdb.gimp_desaturate_full(cropped_image, DESATURATE_LIGHTNESS)
# Show the results
gimp.displays_flush()
This is sort of the best of the 10 worlds. Is it close? It is not working, that is for sure. The closest that I got to result, was the whole image resized and a black rectangle in the middle...
I have no idea why it needs to clear / select none / invert / cut / select none. I would just want to "hit enter", since I already made the selection ready for cropping. But I guess that does not exsist.
When I ask it why we need all those, GPT says that it is not needed, but then it puts it right back in every time. I guess this is called hallucinating.
I also tried with rectangular selection (instead of using the croptool), and crop from there, But I can't get that to work either.
Code:
# get current selection
selection = pdb.gimp_selection_save(image)
# Crop image
pdb.gimp_edit_copy(drawable)
cropped_image = pdb.gimp_edit_paste_as_new()
pdb.gimp_floating_sel_to_layer(cropped_image)
pdb.gimp_selection_none(image)
# Crop prev selected area
pdb.gimp_image_select_item(image, CHANNEL_OP_REPLACE, selection)
pdb.gimp_edit_clear(cropped_image)
pdb.gimp_selection_none(image)
How would you go about this?
Resizing, desaturation and registration are working.
Thanks, Thomas.