Bylo by ještě dobré zmínit způsob aplikace těch filtrů. Když mám například tu pipeline převod do ČB+negace, jestli se to provádí "po pixelech" nebo "po obrázcích". "po pixelech" mám na mysli něco jako:
for y := .... {
for x := .... {
r,g,b=getpixel(source, x,y)
for filter := range filters .... {
rnew, gnew, bnew = applyFilter(filter, r, g, b)
}
setpixel(destination, x, y)
}
}
Versus IMHO o dosti pomalejší způsob:
for filter := range filters .... {
for y := .... {
for x := .... {
r,g,b=getpixel(source, x,y)
}
}
}
Je to ten druhý způsob: https://github.com/disintegration/gift/blob/master/gift.go#L101
Navíc běží v gorutinách prozatím jen copyimage, takže prostor pro násobné urychlení existuje.