11-24-2024, 12:29 AM
I generally use some version of GIMP 2.10 on many different distros of Linux, most often Debian-based such Ubuntu, Parrot, Neon, etc
For the most part, I've done my scripting in Scheme because it was the only scripting language I could get to register properly, the python scripts would never load no matter what troubleshooting steps I tried. This is fine though as Scheme is fun and still powerful enough to do just about whatever I need with the proper ideas.
Anyhow, the point being that I came across a hurdle with (gimp-drawable-set-pixel), which is the only function I know where you can explicitly define pixels values to place into an image. And with the following script :
I get the cryptic error message -- "Error: Procedure execution of gimp-drawable-set-pixel failed". As a side note, I don't use python because it's been difficult for me to get Gimp to register python scripts in Linux, so seeing as how I have quite a few Scheme scripts started I'd like to try and resolve this fundamental problem of being able to place a pixel into an image, are there other functions that could give a similar functionality? I've considered sampling pixels with (gimp-drawable-get-pixel) and then creating a new layer with 1x1 pixels, and then applying a paint to the new layer to match the color of sampled picture, and then mixed down a layer group of 320 x 240 layers (for a 320x240 pixel image for example) and then calling that a 'set pixel" alternative, but that would be an extreme work around. Is there anything obvious that I'm overlooking?
For the most part, I've done my scripting in Scheme because it was the only scripting language I could get to register properly, the python scripts would never load no matter what troubleshooting steps I tried. This is fine though as Scheme is fun and still powerful enough to do just about whatever I need with the proper ideas.
Anyhow, the point being that I came across a hurdle with (gimp-drawable-set-pixel), which is the only function I know where you can explicitly define pixels values to place into an image. And with the following script :
Code:
(define (test-set-pixel)
(let* (
;; Create a new image and drawable
(frame (car (gimp-image-new 10 10 RGB)))
(drawframe (car (gimp-layer-new frame 10 10 RGB "Test Layer" 100 NORMAL-MODE)))
)
;; Add the new layer to the image
(gimp-image-insert-layer frame drawframe 0 -1)
(gimp-drawable-fill drawframe TRANSPARENT-FILL)
;; Test setting a single pixel
(let* (
(x 0)
(y 0)
(new-pixel (vector 255 0 0 255)) ;; Red with full opacity
)
(gimp-message (string-append "Setting pixel at (" (number->string x) ", " (number->string y) ")"))
(gimp-drawable-set-pixel drawframe x y 4 new-pixel))
;; Save the image for inspection
(file-png-save 0 frame drawframe "test.png" "test.png" 1 9 1 1 1 1 1)
(gimp-message "Test image saved.")
(gimp-image-delete frame)
)
)
I get the cryptic error message -- "Error: Procedure execution of gimp-drawable-set-pixel failed". As a side note, I don't use python because it's been difficult for me to get Gimp to register python scripts in Linux, so seeing as how I have quite a few Scheme scripts started I'd like to try and resolve this fundamental problem of being able to place a pixel into an image, are there other functions that could give a similar functionality? I've considered sampling pixels with (gimp-drawable-get-pixel) and then creating a new layer with 1x1 pixels, and then applying a paint to the new layer to match the color of sampled picture, and then mixed down a layer group of 320 x 240 layers (for a 320x240 pixel image for example) and then calling that a 'set pixel" alternative, but that would be an extreme work around. Is there anything obvious that I'm overlooking?