parent
4d008b5c46
commit
87fabf6a8d
9 changed files with 93 additions and 9 deletions
@ -0,0 +1,8 @@ |
||||
module git.kirsle.net/go/render |
||||
|
||||
go 1.13 |
||||
|
||||
require ( |
||||
github.com/veandco/go-sdl2 v0.4.1 |
||||
golang.org/x/image v0.0.0-20200119044424-58c23975cae1 |
||||
) |
@ -0,0 +1,5 @@ |
||||
github.com/veandco/go-sdl2 v0.4.1 h1:HmSBvVmKWI8LAOeCfTTM8R33rMyPcs6U3o8n325c9Qg= |
||||
github.com/veandco/go-sdl2 v0.4.1/go.mod h1:FB+kTpX9YTE+urhYiClnRzpOXbiWgaU3+5F2AB78DPg= |
||||
golang.org/x/image v0.0.0-20200119044424-58c23975cae1 h1:5h3ngYt7+vXCDZCup/HkCQgW5XwmSvR/nA2JmJ0RErg= |
||||
golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= |
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= |
@ -0,0 +1,55 @@ |
||||
package render |
||||
|
||||
import ( |
||||
"errors" |
||||
"image" |
||||
"image/gif" |
||||
"image/jpeg" |
||||
"image/png" |
||||
"os" |
||||
"path/filepath" |
||||
|
||||
"golang.org/x/image/bmp" |
||||
) |
||||
|
||||
// OpenImage opens an image file from disk.
|
||||
//
|
||||
// Supported file types are: jpeg, gif, png, bmp.
|
||||
func OpenImage(filename string) (image.Image, error) { |
||||
fh, err := os.Open(filename) |
||||
if err != nil { |
||||
return nil, err |
||||
} |
||||
|
||||
var img image.Image |
||||
|
||||
switch filepath.Ext(filename) { |
||||
case ".jpg": |
||||
fallthrough |
||||
case ".jpeg": |
||||
img, err = jpeg.Decode(fh) |
||||
case ".png": |
||||
img, err = png.Decode(fh) |
||||
case ".bmp": |
||||
img, err = bmp.Decode(fh) |
||||
case ".gif": |
||||
img, err = gif.Decode(fh) |
||||
default: |
||||
return nil, errors.New("unsupported file type") |
||||
} |
||||
|
||||
return img, err |
||||
} |
||||
|
||||
// ImageToRGBA converts a Go image.Image into an image.RGBA.
|
||||
func ImageToRGBA(input image.Image) *image.RGBA { |
||||
var bounds = input.Bounds() |
||||
var rgba = image.NewRGBA(bounds) |
||||
for x := bounds.Min.X; x < bounds.Max.X; x++ { |
||||
for y := bounds.Min.Y; y < bounds.Max.Y; y++ { |
||||
color := input.At(x, y) |
||||
rgba.Set(x, y, color) |
||||
} |
||||
} |
||||
return rgba |
||||
} |
@ -0,0 +1,4 @@ |
||||
package render |
||||
|
||||
// Version number of the render library.
|
||||
const Version = "0.1.0" |
Loading…
Reference in new issue