func MakeOneGIFFromPaths(pngs []string, delay int, withTransparency bool, storageClient *storage.Client) (*gif.GIF, error) {

	sortedPngs, err := FetchGIFComponents(pngs, storageClient)
	if err != nil {
		return nil, err
	}

	// For now, block gif creation if all of the input images don't have the
	// same size. TODO: resize images that don't all share the same bounds.
	lastBounds := sortedPngs[0].Bounds()
	for k, pngImg := range sortedPngs {
		if x := pngImg.Bounds(); x != lastBounds {
			return nil, fmt.Errorf("Image %d (%s) had unexpected bounds (image 0 (%s) bounds: %v, image %d bounds: %v)", k, pngs[k], pngs[0], lastBounds, k, x)
		}
	}

	return MakeOneGIF(sortedPngs, delay, withTransparency)
}
// MakeOneGIFFromPaths creates an animated gif from an ordered slice of paths to
// image files - which may be local or hosted in an accessible Google Storage
// location. (The string for each png should be a fully specified path.)
MakeOneGIFFromPaths creates an animated gif from an ordered slice of paths to
image files - which may be local or hosted in an accessible Google Storage
location. (The string for each png should be a fully specified path.)
// MakeOneGIFFromPaths creates an animated gif from an ordered slice of paths to // image files - which may be local or hosted in an accessible Google Storage // location . ( The string for each png should be a fully specified path . )
func MakeOneGIFFromPaths(pngs []string, delay int, withTransparency bool, storageClient *storage.Client) (*gif.GIF, error) {
	sortedPngs, err := FetchGIFComponents(pngs, storageClient)
	if err != nil {
		return nil, err
	}
	lastBounds := sortedPngs[0].Bounds()
	for k, pngImg := range sortedPngs {
		if x := pngImg.Bounds(); x != lastBounds {
			return nil, fmt.Errorf("Image %d (%s) had unexpected bounds (image 0 (%s) bounds: %v, image %d bounds: %v)", k, pngs[k], pngs[0], lastBounds, k, x)
		}
	}
	return MakeOneGIF(sortedPngs, delay, withTransparency)
}
func MakeOneGIFFromPaths ( pngs [ ] string , delay int , withTransparency bool , storageClient * storage . Client ) ( * gif . GIF , error ) { sortedPngs , err := FetchGIFComponents ( pngs , storageClient ) if err != nil { return nil , err } lastBounds := sortedPngs [ 0 ] . Bounds ( ) for k , pngImg := range sortedPngs { if x := pngImg . Bounds ( ) ; x != lastBounds { return nil , fmt . Errorf ( " " , k , pngs [ k ] , pngs [ 0 ] , lastBounds , k , x ) } } return MakeOneGIF ( sortedPngs , delay , withTransparency ) }
MakeOneGIFFromPaths creates an animated gif from an ordered slice of paths to
image files - which may be local or hosted in an accessible Google Storage
location.
MakeOneGIFFromPaths creates an animated gif from an ordered slice of paths to image files - which may be local or hosted in an accessible Google Storage location .
// For now, block gif creation if all of the input images don't have the // same size. TODO: resize images that don't all share the same bounds.