
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"
:tada: Basic Overview
Image manipulation go library plus cross platform CLI tool.
⚡ Features
- ? Merge
- ✂️ Crop
- ? Resize
- ? Watermark
- ? Animate
- ? Easing
- ? Transition
? Getting started
Install via 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
? Merge
Image 1, Image 2, Result Image
-----------------------------------, -------------------------------------------, ------------------------------------------
 ,
,  ,
, 
 ,
,  ,
, 
Mergi Tool
Horizontal
mergi \
-t TT \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png
Vertical
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"))
✂️ Crop
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"))
? Resize
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"))
? Watermark
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"))
? Animate
Image 1, Image 2, Result Animation
-----------------------------------, -------------------------------------------, ------------------------------------------
 ,
,  ,
, 
 ,
,  ,
, 
Mergi Tool
Sprite Animation
mergi \
-t "TT" \
-i testdata/mergi_bg_1.png \
-i testdata/mergi_bg_2.png \
-a "sprite 50"
Smooth Animation
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"))
? Easing
, , , 
-----------------------, ----------------------, ----------------------, ----------------------
 InBounce,
InBounce,  InBack,
InBack,  InOutQuad,
InOutQuad,  InSine
InSine
 InCubic,
InCubic,  InElastic,
InElastic,  InOutExpo,
InOutExpo,  Linear
Linear
 InOutBounce,
InOutBounce,  InCirc,
InCirc,  InOutCubic,
InOutCubic,  InOutQuart
InOutQuart
 InOutBack,
InOutBack,  InCubic,
InCubic,  InOutCirc,
InOutCirc,  InOutSine
InOutSine
 InExpo,
InExpo,  OutBounce,
OutBounce,  InQuint
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"))
? Transition
, , , 
-----------------------, ----------------------, ----------------------, ----------------------
 SlideBar,
SlideBar,  Ink1,
Ink1,  Ink2,
Ink2,  Ink3
Ink3
 ScaleUpFastRect,
ScaleUpFastRect,  ScaleDownFastRect,
ScaleDownFastRect,  ScaleUpFastCircle,
ScaleUpFastCircle,  ScaleDownFastCircle
ScaleDownFastCircle
Learn more examples
? Contribute
- Clone the repository
$ go get github.com/noelyahan/mergi
- Run unit tests
- Fix bug
- Add new feature
- Push
? Contributors
This project follows the all-contributors specification.
Contributions of any kind are welcome!
? License
This project is licensed under the MIT License - see the LICENSE.md file for details
 projecs by owner
                                                                (
                                                                projecs by owner
                                                                (