func copyimage(dst draw.Image, src image.Image, options *Options) {
	if options == nil {
		options = &defaultOptions
	}

	srcb := src.Bounds()
	dstb := dst.Bounds()
	pixGetter := newPixelGetter(src)
	pixSetter := newPixelSetter(dst)

	parallelize(options.Parallelization, srcb.Min.Y, srcb.Max.Y, func(pmin, pmax int) {
		for srcy := pmin; srcy < pmax; srcy++ {
			for srcx := srcb.Min.X; srcx < srcb.Max.X; srcx++ {
				dstx := dstb.Min.X + srcx - srcb.Min.X
				dsty := dstb.Min.Y + srcy - srcb.Min.Y
				pixSetter.setPixel(dstx, dsty, pixGetter.getPixel(srcx, srcy))
			}
		}
	})
}
// copyimage copies an image from src to dst.
copyimage copies an image from src to dst.
// copyimage copies an image from src to dst .
func copyimage(dst draw.Image, src image.Image, options *Options) {
	if options == nil {
		options = &defaultOptions
	}
	srcb := src.Bounds()
	dstb := dst.Bounds()
	pixGetter := newPixelGetter(src)
	pixSetter := newPixelSetter(dst)
	parallelize(options.Parallelization, srcb.Min.Y, srcb.Max.Y, func(pmin, pmax int) {
		for srcy := pmin; srcy < pmax; srcy++ {
			for srcx := srcb.Min.X; srcx < srcb.Max.X; srcx++ {
				dstx := dstb.Min.X + srcx - srcb.Min.X
				dsty := dstb.Min.Y + srcy - srcb.Min.Y
				pixSetter.setPixel(dstx, dsty, pixGetter.getPixel(srcx, srcy))
			}
		}
	})
}
func copyimage ( dst draw . Image , src image . Image , options * Options ) { if options == nil { options = & defaultOptions } srcb := src . Bounds ( ) dstb := dst . Bounds ( ) pixGetter := newPixelGetter ( src ) pixSetter := newPixelSetter ( dst ) parallelize ( options . Parallelization , srcb . Min . Y , srcb . Max . Y , func ( pmin , pmax int ) { for srcy := pmin ; srcy < pmax ; srcy ++ { for srcx := srcb . Min . X ; srcx < srcb . Max . X ; srcx ++ { dstx := dstb . Min . X + srcx - srcb . Min . X dsty := dstb . Min . Y + srcy - srcb . Min . Y pixSetter . setPixel ( dstx , dsty , pixGetter . getPixel ( srcx , srcy ) ) } } } ) }
copyimage copies an image from src to dst.
copyimage copies an image from src to dst .