Algoritmen kan sedan återanvändas till ett kontrastsänkande grå- filter enbart genom att ändra på de tre rader som ändrar bildens pixelvärden. Detta är principen för ett sådant filter:
compo[0] /= 2;
compo[1] /= 2;
compo[2] /= 2;
För att resultatet inte ska bli alltför jämngrått så lättar vi sedan upp bilden lite med:
compo[0] += 60;
compo[1] += 60;
compo[2] += 60;
Våra egendefinierade filterklasser behöver dock ytterligare två saker:
public void setHints(int hint){
hint |= ImageConsumer.TOPDOWNLEFTRIGHT;
super.setHints(hint);
}
Genom detta så försäkrar vi oss om att pixelbearbetningen alltid kommer att ske i rätt ordning med början i det övre högre hörnet.super.setPixels(x, y, width, height, model,
pixie, offset, scansize);
Förutom själva filtret så räcker det annars i Java med följande delsteg för bildbehandlingen:
ImageProducer ip = im.getSource();
FilteredImageSource fiSource =
new FilteredImageSource(ip, new NegFilter());
negBild = createImage(fiSource);
De lite fåniga Sverigefiltren ingår inte i själva uppgiften utan kan bara ses som ett smakprov på den frivillga delen av Del 3 som sedan fortsätter i Uppgift3f. Filtren påverkar bildens pixlar i stort sett på samma sätt som de obligatoriska men har även det lilla hacket:
pixie[index] = (byte)model.getDataElement(compo,0);
istället för
pixie[index] = (int)model.getDataElement(compo,0);
Genom denna typomvandlig väljer vi att bygga upp bildens färgskala med enbart de 8 bitar av en integers 32 bitar som representerar blå-gula toner i RGB-modellen.