Personally I use pict and racket/draw instead of htdp/image, because 
save-image is png only.
Pict to transform or load the image, racket/draw's bitmap% to save and/or 
load the image
(sidenote: in general I find pict more pleasant to work with, but that may 
be subjective):

(require pict
         racket/draw)

;; this is a rough sketch of the image functions I use

;; make-object 2nd variant: 
https://docs.racket-lang.org/draw/bitmap_.html?q=bitmap%25#%28constructor._%28%28lib._racket%2Fdraw..rkt%29._bitmap~25%29%29
(define b (make-object bitmap% filename-or-port image-type-see-docs #f #t)) 
;; background color #f, complain on failure #t
(define p (bitmap b)) ;; use bitmap% as pict
;; use pict functions to transform pict
(define p2 (scale-to-fit p ...))
;; other pict transforms
(define p3 (inset p2 30 0))
;; saving the transformed file
(send (pict->bitmap p3) save-file out 'png) ;; other file types possible

[email protected] schrieb am Mittwoch, 12. Mai 2021 um 15:06:02 UTC+2:

> Dan, that's awesome. Thank you.
>
> Martin, I would love some way to extract the image metadata from each of 
> the files outputted by Dan's function. All my function does is take the 
> current width and height and apply some math to return some new values, so 
> right now I'm just manually going into finder, looking at the images width 
> and height, and plugging those values into my function. 
>
> On Tuesday, May 11, 2021 at 7:31:15 PM UTC-6 [email protected] wrote:
>
>> So to clarify, you want something like the following (pseudocode)?
>>
>> (define (process-image transform image-file-data)
>>    (let* ([path (get-full-path image-file-data)]
>>           [image (bitmap/file path)]
>>           [new-image (transform image)])
>>     (save-image new-image path))
>>
>> (define (process-file path)
>>   (let ([image-file-data (extract-image-metadata path)])
>>      (process-image resize image-file-data)))
>>
>> (map process-file (find-all-images directory))
>>
>> One question - where do the new width and height of each image come from, 
>> if you are reading the list of filenames from a directory?
>>
>> martin
>>              
>>
>> On Tue, May 11, 2021 at 3:42 PM Robert Haisfield <[email protected]> 
>> wrote:
>>
>>> Okay, so I figured out how to do what I want on individual photos using 
>>> bitmap/file and 2htdp/image, but I'm trying to find a more programmatic way 
>>> to do it. Basically, I'd love to create a data structure that feeds into 
>>> the file path, width, and height into the image-resizer function. Even 
>>> better if I could point the function at a directory, it finds all of the 
>>> images in it, and creates the data structure for me. Any ideas?
>>>
>>> *No, I'm not trying to just resize photos (this would be much easier if 
>>> that's all I had to do), the thing I'm working with requires me to add 
>>> whitespace to the sides of the images to have them display properly.*
>>>
>>> [image: CleanShot 2021-05-11 at [email protected]]
>>>
>>> On Tuesday, May 11, 2021 at 3:06:20 PM UTC-6 Jens Axel Søgaard wrote:
>>>
>>>> Hi Robert,
>>>>
>>>> There are some bindings for Magick in the example folder for the FFI 
>>>> library.
>>>>
>>>>
>>>> https://github.com/racket/racket/tree/master/pkgs/racket-doc/ffi/examples
>>>>
>>>> The bindings are in magic.rkt and examples of use are in use-magick.rkt 
>>>> (see the bottom).
>>>>
>>>> /Jens Axel
>>>>
>>>>
>>>> Den tir. 11. maj 2021 kl. 22.15 skrev 'John Clements' via Racket Users <
>>>> [email protected]>:
>>>>
>>>>> Racket has the ability to read a variety of different image files. I 
>>>>> would go first to 2htdp/image’s “bitmap/file” to read images. 
>>>>> “save-image” 
>>>>> can write images (but only as png files). I believe there are also an 
>>>>> array 
>>>>> of lower-level image manipulation functions that are likely to have a 
>>>>> less 
>>>>> friendly interface :).
>>>>>
>>>>> Apologies in advance for any misleading information I might be 
>>>>> providing….
>>>>>
>>>>> John
>>>>>
>>>>> > On May 11, 2021, at 1:09 PM, Robert Haisfield <[email protected]> 
>>>>> wrote:
>>>>> > 
>>>>> > Alternatively, does the normal images function for Racket work? When 
>>>>> I was looking through the documentation I saw a lot about creating shapes 
>>>>> but not about using image files.
>>>>> > 
>>>>> > On Tuesday, May 11, 2021 at 2:03:33 PM UTC-6 Robert Haisfield wrote:
>>>>> > Hmm does the video language work for image files? If so, then I 
>>>>> think it might work.
>>>>> > 
>>>>> > On Tuesday, May 11, 2021 at 9:03:35 AM UTC-6 Sage Gerard wrote:
>>>>> > I hope that has what Robert is looking for, but I don't recognize 
>>>>> that speech. In fact, I have a false memory, because I'm not finding the 
>>>>> speech I'm looking for on https://con.racket-lang.org/2018/#speakers
>>>>> > 
>>>>> > On 5/11/21 10:19 AM, Bruce O'Neel wrote:
>>>>> >> This might be it.
>>>>> >> 
>>>>> >> (seventh RacketCon): Leif Andersen -- Movies as Programs: The Story 
>>>>> of a Racket - YouTube
>>>>> >> 
>>>>> >> 
>>>>> >> 
>>>>> >> 
>>>>> >> 
>>>>> >> 11 May 2021 15:30 Sage Gerard <[email protected]> wrote:
>>>>> >> I don't know of one off hand, but I believe RacketCon 2018 (?) 
>>>>> included a presenter that showed a PostScript-like DSL for designers and 
>>>>> artists.  If pict not cover your needs, maybe dig into the presentations?
>>>>> >> 
>>>>> >> Failing that, can you show what you'd hope the syntax would look 
>>>>> like? That would probably help point you in the right direction,
>>>>> >> 
>>>>> >> On 5/11/21 9:26 AM, Robert Haisfield wrote:
>>>>> >>> I have to do a bunch of .jpg and .png image resizings and was 
>>>>> looking for a programmatic way to do it. Is their a Racket DSL for this? 
>>>>> --
>>>>> >>> You received this message because you are subscribed to the Google 
>>>>> Groups "Racket Users" group.
>>>>> >>> To unsubscribe from this group and stop receiving emails from it, 
>>>>> send an email to [email protected].
>>>>> >>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/racket-users/0d576c32-7d4d-4944-9cbc-c12f04406fccn%40googlegroups.com
>>>>> .
>>>>> >> -- ~slg --
>>>>> >> You received this message because you are subscribed to the Google 
>>>>> Groups "Racket Users" group.
>>>>> >> To unsubscribe from this group and stop receiving emails from it, 
>>>>> send an email to [email protected].
>>>>> >> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/racket-users/6e3aacdc-015b-2484-3bee-0c08e3fb612d%40sagegerard.com
>>>>> .
>>>>> >> 
>>>>> >> -- 
>>>>> >> You received this message because you are subscribed to the Google 
>>>>> Groups "Racket Users" group.
>>>>> >> To unsubscribe from this group and stop receiving emails from it, 
>>>>> send an email to [email protected].
>>>>> >> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/racket-users/1620742795-01b81de5d6862fd390ec60605ee3bc9d%40pckswarms.ch
>>>>> .
>>>>> > --
>>>>> > ~slg
>>>>> > 
>>>>> > 
>>>>> > -- 
>>>>> > You received this message because you are subscribed to the Google 
>>>>> Groups "Racket Users" group.
>>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>>> send an email to [email protected].
>>>>> > To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/racket-users/b6a89a78-c92c-41c1-960a-49d64d8a5366n%40googlegroups.com
>>>>> .
>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Racket Users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>>
>>>> To view this discussion on the web visit 
>>>>> https://groups.google.com/d/msgid/racket-users/404c8fad-befc-4b01-8728-48ce9b912117%40mtasv.net
>>>>> .
>>>>>
>>>>
>>>>
>>>> -- 
>>>> -- 
>>>> Jens Axel Søgaard
>>>>
>>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Racket Users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>>
>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/racket-users/9266c91c-83a6-4d78-95c0-d70c29e4b4e3n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/racket-users/9266c91c-83a6-4d78-95c0-d70c29e4b4e3n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/595fd9b6-0ca5-4161-b5bd-4ec3250018dcn%40googlegroups.com.

Reply via email to