Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
github.hscsec.cn/noelyahan/mergi
Result | Terminal Code |
---|---|
mergi -t TT -i https://raw.githubusercontent.com/ashleymcnamara/gophers/master/Facepalm_Gopher.png -r "131 131" -i https://raw.githubusercontent.com/ashleymcnamara/gophers/master/Facepalm_Picard_Gopher.png -r "131 131" -a "sprite 50" |
Image manipulation go library plus cross platform CLI tool.
go get
To install Mergi, use go get
, or download the binary file from Releases page.
$ go get github.com/noelyahan/mergi
Usage:
╔╦╗╔═╗╦═╗╔═╗╦
║║║║╣ ╠╦╝║ ╦║
╩ ╩╚═╝╩╚═╚═╝╩
let's go & make imaging fun
http://mergi.io
version 1.0.0
-a string
Enter animation type=[sprite, slide] and the delay to get mergi gif animation ex: smooth 10
-c value
Enter crop points and height and width ex: x y w h
-f string
Enter true if you want to process the final output
-i value
Enter images that want to merge ex: /path/img1 or url
-o string
Enter image outputs file ex: out.png or out.jpg (default "out.png")
-r value
Enter resize width and height of the output ex: 100 200
-t string
Enter a merge template string ex: TBTBTB (default "T")
-w value
Enter watermark image and points to place it, [-r w h] is optional ex: /path/img -r w h x y
Image 1 | Image 2 | Result Image |
---|---|---|
Mergi Tool
mergi \
-t TT \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png
mergi \
-t TB \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png
Mergi Library
image1, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_1.png"))
image2, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_2.png"))
horizontalImage, _ := mergi.Merge("TT", []image.Image{image1, image2})
mergi.Export(impexp.NewFileExporter(horizontalImage, "horizontal.png"))
verticalImage, _ := mergi.Merge("TB", []image.Image{image1, image2})
mergi.Export(impexp.NewFileExporter(verticalImage, "vertical.png"))
Image | Result Image |
---|---|
Mergi Tool
mergi \
-i testdata/mergi_bg_1.png \
-c "10 40 200 110"
Mergi Library
img, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_1.png"))
res, _ := mergi.Crop(img, image.Pt(10, 40), image.Pt(200, 110))
mergi.Export(impexp.NewFileExporter(res, "crop.png"))
Image | Result Image |
---|---|
Mergi Tool
mergi \
-i testdata/mergi_bg_1.png \
-r "180 80"
Mergi Library
img, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_1.png"))
res, _ := mergi.Resize(img, uint(180), uint(80))
mergi.Export(impexp.NewFileExporter(res, "resize.png"))
Image | Watermark Image | Result Image |
---|---|---|
Mergi Tool
mergi \
-i testdata/mergi_bg_1.png \
-w "testdata/mergi_logo_watermark_90x40.png 250 10"
Mergi Library
originalImage, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_1.png"))
watermarkImage, _ := mergi.Import(impexp.NewFileImporter("./testdata/glass-mergi_logo_watermark_90x40.jpg"))
res, _ := mergi.Watermark(watermarkImage, originalImage, image.Pt(250, 10))
mergi.Export(impexp.NewFileExporter(res, "watermark.png"))
Image 1 | Image 2 | Result Animation |
---|---|---|
Mergi Tool
mergi \
-t "TT" \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png \
-a "sprite 50"
mergi \
-t "TT" \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png \
-a "smooth 5"
Mergi Library
image1, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_1.png"))
image2, _ := mergi.Import(impexp.NewFileImporter("./testdata/mergi_bg_2.png"))
gif, _ := mergi.Animate([]image.Image{image1, image2}, 50)
mergi.Export(impexp.NewAnimationExporter(gif, "out.gif"))
InBounce | InBack | InOutQuad | InSine |
InCubic | InElastic | InOutExpo | Linear |
InOutBounce | InCirc | InOutCubic | InOutQuart |
InOutBack | InCubic | InOutCirc | InOutSine |
InExpo | OutBounce | InQuint |
Mergi Library
Note: Ease function can be applied with any function, in this example it's applied with Watermark function
// Load background and the square images
square, _ := mergi.Import(impexp.NewFileImporter("./testdata/square.jpg"))
bg, _ := mergi.Import(impexp.NewFileImporter("./testdata/white_bg.jpg"))
// Init images frames to add applied ease frames
frames := make([]image.Image, 0)
// Init the limts of the Ease
to := bg.Bounds().Max.X - square.Bounds().Max.X
posY := bg.Bounds().Max.Y/2 - square.Bounds().Max.Y/2
speed := 4
// Ease from 0 to width of background
for i := 0; i < to; i += speed {
// Apply Easeing function InBounce
posX := mergi.Ease(float64(i), 0, float64(to), mergi.InBounce)
img, _ := mergi.Watermark(square, bg, image.Pt(int(posX), posY))
frames = append(frames, img)
}
// For preview example, save as a gif
gif, _ := mergi.Animate(frames, 1)
mergi.Export(impexp.NewAnimationExporter(gif, "out.gif"))
SlideBar | Ink1 | Ink2 | Ink3 |
ScaleUpFastRect | ScaleDownFastRect | ScaleUpFastCircle | ScaleDownFastCircle |
Learn more examples
$ go get github.com/noelyahan/mergi
Noel 💻 📖 💬 👀 🤔 🎨 |
---|
This project follows the all-contributors specification. Contributions of any kind are welcome!
This project is licensed under the MIT License - see the LICENSE.md file for details
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.