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

roberthh...@gmail.com 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 martin...@gmail.com 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 <roberthh...@gmail.com> 
>> 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 16.31...@2x.png]
>>>
>>> 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 <
>>>> racket...@googlegroups.com>:
>>>>
>>>>> 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 <roberthh...@gmail.com> 
>>>>> 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 <sa...@sagegerard.com> 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 racket-users...@googlegroups.com.
>>>>> >>> 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 racket-users...@googlegroups.com.
>>>>> >> 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 racket-users...@googlegroups.com.
>>>>> >> 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 racket-users...@googlegroups.com.
>>>>> > 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 racket-users...@googlegroups.com.
>>>>>
>>>> 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 racket-users...@googlegroups.com.
>>>
>> 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 racket-users+unsubscr...@googlegroups.com.
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