Autorotate logic

pull/3/head
Toni Melisma 4 years ago
parent b1b71c4dfc
commit 3561d9cfa9

@ -174,7 +174,7 @@ type job struct {
func checkError(e error) {
if e != nil {
panic(e)
fmt.Fprintln(os.Stderr, "Error:", e)
}
}
@ -452,21 +452,65 @@ func resizeFullsizeVideo(source string, destination string) {
}
}
func resizeThumbnailImage(source string, destination string) {
// TODO converge all three operations into one
buffer, err := bimg.Read(source)
checkError(err)
func autoRotateImage(input []byte) *bimg.Image {
image := bimg.NewImage(input)
newImage, err := bimg.NewImage(buffer).Thumbnail(200)
metadata, err := image.Metadata()
checkError(err)
newImage2, err := bimg.NewImage(newImage).AutoRotate()
_, err = image.Convert(bimg.JPEG)
checkError(err)
if thumbnailExtension == ".jpeg" {
newImage3, err := bimg.NewImage(newImage2).Convert(bimg.JPEG)
switch metadata.EXIF.Orientation {
case 2:
_, err := image.Flip()
checkError(err)
bimg.Write(destination, newImage3)
case 3:
_, err := image.Rotate(180)
checkError(err)
case 4:
_, err := image.Flip()
checkError(err)
_, err = image.Rotate(180)
checkError(err)
case 5:
_, err := image.Flip()
checkError(err)
_, err = image.Rotate(90)
checkError(err)
case 6:
_, err = image.Rotate(180)
checkError(err)
case 7:
_, err := image.Flip()
checkError(err)
_, err = image.Rotate(270)
checkError(err)
case 8:
_, err := image.Rotate(270)
checkError(err)
case 1:
default:
}
return image
}
func resizeThumbnailImage(source string, destination string) {
if thumbnailExtension == ".jpg" {
buffer, err := bimg.Read(source)
checkError(err)
image := autoRotateImage(buffer)
_, err = image.Thumbnail(200)
// 280 x 210
checkError(err)
newImage, err := image.Convert(bimg.JPEG)
checkError(err)
bimg.Write(destination, newImage)
} else {
fmt.Fprintf(os.Stderr, "Can't figure out what format to convert thumbnail image to: %s\n", destination)
}
@ -474,19 +518,19 @@ func resizeThumbnailImage(source string, destination string) {
func resizeFullsizeImage(source string, destination string) {
// TODO converge all three operations into one
buffer, err := bimg.Read(source)
checkError(err)
if fullsizePictureExtension == ".jpg" {
buffer, err := bimg.Read(source)
checkError(err)
bufferImageSize, err := bimg.Size(buffer)
ratio := bufferImageSize.Width / bufferImageSize.Height
bufferImageSize, err := bimg.Size(buffer)
ratio := bufferImageSize.Width / bufferImageSize.Height
newImage, err := bimg.NewImage(buffer).Resize(ratio*1080, 1080)
checkError(err)
newImage, err := bimg.NewImage(buffer).Resize(ratio*1080, 1080)
checkError(err)
newImage2, err := bimg.NewImage(newImage).AutoRotate()
checkError(err)
newImage2, err := bimg.NewImage(newImage).AutoRotate()
checkError(err)
if fullsizePictureExtension == ".jpeg" {
newImage3, err := bimg.NewImage(newImage2).Convert(bimg.JPEG)
checkError(err)
bimg.Write(destination, newImage3)

@ -4,5 +4,9 @@ go 1.15
require (
github.com/cheggaaa/pb/v3 v3.0.5
github.com/fatih/color v1.9.0 // indirect
github.com/h2non/bimg v1.1.4
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/mattn/go-runewidth v0.0.9 // indirect
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 // indirect
)

@ -4,15 +4,27 @@ github.com/cheggaaa/pb/v3 v3.0.5 h1:lmZOti7CraK9RSjzExsY53+WWfub9Qv13B5m4ptEoPE=
github.com/cheggaaa/pb/v3 v3.0.5/go.mod h1:X1L61/+36nz9bjIsrDU52qHKOQukUQe2Ge+YvGuquCw=
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/h2non/bimg v1.1.4 h1:6qf7qDo3d9axbNUOcSoQmzleBCMTcQ1PwF3FgGhX4O0=
github.com/h2non/bimg v1.1.4/go.mod h1:R3+UiYwkK4rQl6KVFTOFJHitgLbZXBZNFh2cv3AEbp8=
github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54=
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7 h1:XtNJkfEjb4zR3q20BBBcYUykVOEMgZeIUOpBPfNYgxg=
golang.org/x/sys v0.0.0-20201017003518-b09fb700fbb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=

Loading…
Cancel
Save