mirror of https://github.com/talgo-cloud/bimg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
11 years ago | |
|---|---|---|
| fixtures | 11 years ago | |
| .editorconfig | 11 years ago | |
| .gitignore | 11 years ago | |
| .travis.yml | 11 years ago | |
| DOCS.md | 11 years ago | |
| LICENSE | 11 years ago | |
| README.md | 11 years ago | |
| debug.go | 11 years ago | |
| file.go | 11 years ago | |
| file_test.go | 11 years ago | |
| image.go | 11 years ago | |
| image_test.go | 11 years ago | |
| metadata.go | 11 years ago | |
| metadata_test.go | 11 years ago | |
| options.go | 11 years ago | |
| resize.go | 11 years ago | |
| resize_test.go | 11 years ago | |
| type.go | 11 years ago | |
| type_test.go | 11 years ago | |
| version.go | 11 years ago | |
| vips.go | 11 years ago | |
| vips.h | 11 years ago | |
README.md
bimg

Go library for blazing fast image processing based on libvips using C bindings.
libvips is typically 4x faster than using the quickest ImageMagick and GraphicsMagick settings, and even 8x faster with JPEG format. It support JPEG, PNG, WEBP, TIFF and Magick image formats.
bimg was heavily inspired in sharp, a great node.js package for image processing build by Lovell Fuller.
Work in progress
Prerequisites
- libvips v7.40.0+ (7.42.0+ recommended)
- C++11 compatible compiler such as gcc 4.6+ or clang 3.0+
Installation
go get gopkg.in/h2non/bimg.v0
Requires Go 1.3+
libvips
Run the following script as sudo (supports OSX, Debian/Ubuntu, Redhat, Fedora, Amazon Linux):
curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | sudo bash -
The install script requires curl and pkg-config
Supported image operations
- Resize
- Enlarge
- Crop
- Zoom
- Rotate
- Flip/Flop
- Extract area
- Extract image metadata (size, format, profile, orientation...)
- Image conversion to multiple formats
API
Example
import (
"fmt"
"os"
"gopkg.in/h2non/bimg.v0"
)
options := bimg.Options{
Width: 800,
Height: 600,
Crop: true,
Quality: 95,
}
newImage, err := bimg.Resize(image, options)
if err != nil {
fmt.Fprintln(os.Stderr, err)
}
func DetermineImageTypeName
func DetermineImageTypeName(buf []byte) string
func IsTypeNameSupported
func IsTypeNameSupported(t string) bool
func IsTypeSupported
func IsTypeSupported(t ImageType) bool
func Read
func Read(path string) ([]byte, error)
func Resize
func Resize(buf []byte, o Options) ([]byte, error)
type Angle
type Angle int
const (
D0 Angle = C.VIPS_ANGLE_D0
D90 Angle = C.VIPS_ANGLE_D90
D180 Angle = C.VIPS_ANGLE_D180
D270 Angle = C.VIPS_ANGLE_D270
)
type Direction
type Direction int
const (
HORIZONTAL Direction = C.VIPS_DIRECTION_HORIZONTAL
VERTICAL Direction = C.VIPS_DIRECTION_VERTICAL
)
type Gravity
type Gravity int
const (
CENTRE Gravity = iota
NORTH
EAST
SOUTH
WEST
)
type Image
type Image struct {
}
func NewImage
func NewImage(buf []byte) *Image
func (*Image) Convert
func (i *Image) Convert(t ImageType) ([]byte, error)
func (*Image) Crop
func (i *Image) Crop(width int, height int) ([]byte, error)
func (*Image) Extract
func (i *Image) Extract(top int, left int, width int, height int) ([]byte, error)
func (*Image) Flip
func (i *Image) Flip() ([]byte, error)
func (*Image) Flop
func (i *Image) Flop() ([]byte, error)
func (*Image) Metadata
func (i *Image) Metadata() (ImageMetadata, error)
func (*Image) Process
func (i *Image) Process(o Options) ([]byte, error)
func (*Image) Resize
func (i *Image) Resize(width int, height int) ([]byte, error)
func (*Image) Rotate
func (i *Image) Rotate(a Angle) ([]byte, error)
func (*Image) Size
func (i *Image) Size() (ImageSize, error)
func (*Image) Type
func (i *Image) Type() string
type ImageMetadata
type ImageMetadata struct {
Orientation int
Alpha bool
Profile bool
Space int
Type string
Size ImageSize
}
func Metadata
func Metadata(buf []byte) (ImageMetadata, error)
type ImageSize
type ImageSize struct {
Width int
Height int
}
func Size
func Size(buf []byte) (ImageSize, error)
type ImageType
type ImageType int
const (
UNKNOWN ImageType = iota
JPEG
WEBP
PNG
TIFF
MAGICK
)
func DetermineImageType
func DetermineImageType(buf []byte) ImageType
type Interpolator
type Interpolator int
const (
BICUBIC Interpolator = iota
BILINEAR
NOHALO
)
func (Interpolator) String
func (i Interpolator) String() string
type Options
type Options struct {
Height int
Width int
Top int
Left int
Crop bool
Enlarge bool
Extend int
Embed bool
Quality int
Compression int
Type ImageType
Rotate Angle
Flip Direction
Gravity Gravity
Interpolator Interpolator
}
type Vips
type Vips struct {
}
License
MIT - Tomas Aparicio