github.com/status-im/status-go@v1.1.0/images/main.go (about) 1 package images 2 3 import ( 4 "bytes" 5 "image" 6 ) 7 8 func GenerateImageVariants(cImg image.Image) ([]IdentityImage, error) { 9 var iis []IdentityImage 10 var err error 11 12 for _, s := range ResizeDimensions { 13 rImg := Resize(s, cImg) 14 15 bb := bytes.NewBuffer([]byte{}) 16 err = EncodeToBestSize(bb, rImg, s) 17 if err != nil { 18 return nil, err 19 } 20 21 ii := IdentityImage{ 22 Name: ResizeDimensionToName[s], 23 Payload: bb.Bytes(), 24 Width: rImg.Bounds().Dx(), 25 Height: rImg.Bounds().Dy(), 26 FileSize: bb.Len(), 27 ResizeTarget: int(s), 28 } 29 30 iis = append(iis, ii) 31 } 32 33 return iis, nil 34 } 35 36 func GenerateIdentityImages(filepath string, aX, aY, bX, bY int) ([]IdentityImage, error) { 37 img, err := Decode(filepath) 38 if err != nil { 39 return nil, err 40 } 41 42 cropRect := image.Rectangle{ 43 Min: image.Point{X: aX, Y: aY}, 44 Max: image.Point{X: bX, Y: bY}, 45 } 46 cImg, err := Crop(img, cropRect) 47 if err != nil { 48 return nil, err 49 } 50 51 return GenerateImageVariants(cImg) 52 } 53 54 func GenerateIdentityImagesFromURL(url string) ([]IdentityImage, error) { 55 img, err := DecodeFromURL(url) 56 if err != nil { 57 return nil, err 58 } 59 60 cImg, err := CropCenter(img) 61 if err != nil { 62 return nil, err 63 } 64 65 return GenerateImageVariants(cImg) 66 } 67 68 func GenerateBannerImage(filepath string, aX, aY, bX, bY int) (*IdentityImage, error) { 69 img, err := Decode(filepath) 70 if err != nil { 71 return nil, err 72 } 73 74 cropRect := image.Rectangle{ 75 Min: image.Point{X: aX, Y: aY}, 76 Max: image.Point{X: bX, Y: bY}, 77 } 78 croppedImg, err := Crop(img, cropRect) 79 if err != nil { 80 return nil, err 81 } 82 83 resizedImg := ShrinkOnly(BannerDim, croppedImg) 84 85 sizeLimits := GetBannerDimensionLimits() 86 87 bb := bytes.NewBuffer([]byte{}) 88 err = EncodeToLimits(bb, resizedImg, sizeLimits) 89 if err != nil { 90 return nil, err 91 } 92 93 ii := &IdentityImage{ 94 Name: BannerIdentityName, 95 Payload: bb.Bytes(), 96 Width: resizedImg.Bounds().Dx(), 97 Height: resizedImg.Bounds().Dy(), 98 FileSize: bb.Len(), 99 ResizeTarget: int(BannerDim), 100 } 101 102 return ii, nil 103 }