Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nfnt/resize
Pure golang image resizing
https://github.com/nfnt/resize
go image-processing resize
Last synced: about 1 month ago
JSON representation
Pure golang image resizing
- Host: GitHub
- URL: https://github.com/nfnt/resize
- Owner: nfnt
- License: isc
- Archived: true
- Created: 2012-08-02T19:48:26.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2022-04-02T06:46:33.000Z (about 2 years ago)
- Last Synced: 2024-02-06T06:41:19.650Z (4 months ago)
- Topics: go, image-processing, resize
- Language: Go
- Homepage:
- Size: 120 KB
- Stars: 2,987
- Watchers: 78
- Forks: 321
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-cobol - resize - Image resizing for the Cobol with common interpolation methods. (Imagery / Middlewares)
- awesome-go-extra - resize - 08-02T19:48:26Z|2022-04-02T06:46:33Z| (Images / Advanced Console UIs)
- awesome-go-cn - resize
- awesome-go-zh - resize
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-stars - resize
- awesome - nfnt/resize - Pure golang image resizing (Go)
- awesome-go - resize - | - | - | (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-golang-repositories - resize
- fucking-awesome-go - :octocat: resize - Image resizing for the Go with common interpolation methods. :star: 1081 :fork_and_knife: 103 (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go-projects - resize - Image resizing for Go with common interpolation methods. (Images / Standard CLI)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-go - resize - Image resizing for the Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go-with-framework - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-go - resize - Image resizing for the Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-stars - nfnt/resize - Pure golang image resizing (Go)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (<span id="图片-images">图片 Images</span> / <span id="高级控制台用户界面-advanced-console-uis">高级控制台用户界面 Advanced Console UIs</span>)
- awesome-go. - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go-cn - resize - 使用 Go 语言编写的具有常见差值功能的图片缩放工具 (图像 / 高级控制台界面)
- awesome-go-with-stars - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- repo-1316-awesome-go-cn - resize
- repo-1211-awesome-go-cn - resize
- awesome-Char - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-reader - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for the Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- Go-awesome - resize - Image resizing for Go with common interpolation methods. (Images / Search and Analytic Databases)
- awesome-go - resize - 使用 Go 語言編寫的具有常見差值功能的圖片縮放工具 (圖象 / 高級控制台界面)
- awesome-go-handwritten - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- my-stars - nfnt/resize - Pure golang image resizing (Go)
- awesome-go2 - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. - :arrow_down:956 - :star:1150 (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for the Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go - resize - Image resizing for Go with common interpolation methods. (Images / Advanced Console UIs)
- awesome-go-zh - resize
- awesome-go-cn - resize
- go-awesome-cn-star - resize
- awesome-go-cn - resize
- awesome-go - resize - Pure golang image resizing - ★ 1927 (Images)
README
# This package is no longer being updated! Please look for alternatives if that bothers you.
Resize
======Image resizing for the [Go programming language](http://golang.org) with common interpolation methods.
[![Build Status](https://travis-ci.org/nfnt/resize.svg)](https://travis-ci.org/nfnt/resize)
Installation
------------```bash
$ go get github.com/nfnt/resize
```It's that easy!
Usage
-----This package needs at least Go 1.1. Import package with
```go
import "github.com/nfnt/resize"
```The resize package provides 2 functions:
* `resize.Resize` creates a scaled image with new dimensions (`width`, `height`) using the interpolation function `interp`.
If either `width` or `height` is set to 0, it will be set to an aspect ratio preserving value.
* `resize.Thumbnail` downscales an image preserving its aspect ratio to the maximum dimensions (`maxWidth`, `maxHeight`).
It will return the original image if original sizes are smaller than the provided dimensions.```go
resize.Resize(width, height uint, img image.Image, interp resize.InterpolationFunction) image.Image
resize.Thumbnail(maxWidth, maxHeight uint, img image.Image, interp resize.InterpolationFunction) image.Image
```The provided interpolation functions are (from fast to slow execution time)
- `NearestNeighbor`: [Nearest-neighbor interpolation](http://en.wikipedia.org/wiki/Nearest-neighbor_interpolation)
- `Bilinear`: [Bilinear interpolation](http://en.wikipedia.org/wiki/Bilinear_interpolation)
- `Bicubic`: [Bicubic interpolation](http://en.wikipedia.org/wiki/Bicubic_interpolation)
- `MitchellNetravali`: [Mitchell-Netravali interpolation](http://dl.acm.org/citation.cfm?id=378514)
- `Lanczos2`: [Lanczos resampling](http://en.wikipedia.org/wiki/Lanczos_resampling) with a=2
- `Lanczos3`: [Lanczos resampling](http://en.wikipedia.org/wiki/Lanczos_resampling) with a=3Which of these methods gives the best results depends on your use case.
Sample usage:
```go
package mainimport (
"github.com/nfnt/resize"
"image/jpeg"
"log"
"os"
)func main() {
// open "test.jpg"
file, err := os.Open("test.jpg")
if err != nil {
log.Fatal(err)
}// decode jpeg into image.Image
img, err := jpeg.Decode(file)
if err != nil {
log.Fatal(err)
}
file.Close()// resize to width 1000 using Lanczos resampling
// and preserve aspect ratio
m := resize.Resize(1000, 0, img, resize.Lanczos3)out, err := os.Create("test_resized.jpg")
if err != nil {
log.Fatal(err)
}
defer out.Close()// write new image to file
jpeg.Encode(out, m, nil)
}
```Caveats
-------* Optimized access routines are used for `image.RGBA`, `image.NRGBA`, `image.RGBA64`, `image.NRGBA64`, `image.YCbCr`, `image.Gray`, and `image.Gray16` types. All other image types are accessed in a generic way that will result in slow processing speed.
* JPEG images are stored in `image.YCbCr`. This image format stores data in a way that will decrease processing speed. A resize may be up to 2 times slower than with `image.RGBA`.Downsizing Samples
-------Downsizing is not as simple as it might look like. Images have to be filtered before they are scaled down, otherwise aliasing might occur.
Filtering is highly subjective: Applying too much will blur the whole image, too little will make aliasing become apparent.
Resize tries to provide sane defaults that should suffice in most cases.### Artificial sample
Original image
![Rings](http://nfnt.github.com/img/rings_lg_orig.png)
Nearest-Neighbor
Bilinear
Bicubic
Mitchell-Netravali
Lanczos2
Lanczos3### Real-Life sample
Original image
![Original](http://nfnt.github.com/img/IMG_3694_720.jpg)
Nearest-Neighbor
Bilinear
Bicubic
Mitchell-Netravali
Lanczos2
Lanczos3License
-------Copyright (c) 2012 Jan Schlicht
Resize is released under a MIT style license.