Library for moving image data on Windows. Manage raw pointers to image data, streams, GUI windows, base64, URLs, cursors, screen coordinates, etc. Supports AutoHotkey v1 and v2.
Imagine a scenario where you have a file but you’re trying to get it uploaded into an API. Or you have a function that returns some strange image format, is there any way you can just get it to show its contents? If you pass anything, literally anything you believe is an image to ImagePutWindow()
it will show up on screen. And then you can magically transform it to be compatible with that specific API.
But you don’t know how. That’s okay because you can just do this:
str := ImagePutBase64("cats.jpg")
or this
ImagePutClipboard("https://example.com/cats.jpg")
or something like this:
pStream := ImagePutStream([0, 0, A_ScreenWidth, A_ScreenHeight])
Working with images should be this easy. ImagePut has automatic type inference, meaning that it will guess whether the input is (1) a file (2) a website url or (3) a series of coordinates that map to the screen. This functionality enables the user to only memorize a single function for any possible input. For a full list of supported input types, click on the documentation link here. For output types click here.
Convert file formats.
; Saves a JPEG as a GIF.
ImagePutFile("cats.jpg", "gif")
Convert file formats and image types at the same time!
; Saves a JPEG as a base64 encoded GIF.
str := ImagePutBase64("cats.jpg", "gif")
There’s also some weird functions like ImagePutCursor
which lets you set anything as your cursor. Make sure you don’t choose an extremely large image!
Finally, there are several advanced features. The first is the ability to specify the input type directly. The second is cropping and scaling functionality. Third is use of ImageEqual() a function that can compare multiple inputs across different windows image data types!
; Declare input type as file.
ImagePutWindow({file: "cats.jpg"})
; Scale 2x and crop 10% from each edge.
ImagePutWindow({file: "cats.jpg", scale: 2, crop:["-10%", "-10%", "-10%", "-10%"]})
; Unknown image type declared as "image" to be cropped to 200x200 pixels.
ImagePutWindow({image: "cats.jpg", crop: [0, 0, 200, 200]})
; Compare a url to a file.
MsgBox % ImageEqual("https://example.com/cats.jpg", "cats.jpg")
; Validate an image as an actual image.
ImageEqual("cats.jpg")
avif
, heic
, and webp
ImagePutWindow(image)
Feel free to ask for any help, questions, or post suggestions, etc.
Extra appreciation: https://ko-fi.com/iseahound