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.