Кузнецов Николай, 2539

Somewhat efficient (in my opinion) way to complete the task.
Resizing algorithms are nearest for fast, and supersampling for best, and although it may not actually be the best, it still provides decent quality and is relatively fast.
For changing color, square root-based method is used, as it allows for subjective brightening without quality degradation. In addition, it's fast.
All resulting images are cached for reuse, as "best" method requires around 200ms of processing on Galaxy S2. In order to make app even more responsive, AsyncTask is used to perform calculations in separate thread.
Static variables aren't inherently bad. Could I have more reasoning on why use of static in this very case is bad?
It generally saves memory in case there are many instances of this class, and it saves processing power by initializing data only once (the float operations in initialization aren't exactly free). pixelTransformTable uses just 1 kilobyte of memory, which is negligible, and individual variables such as TARGET_WIDTH only make sense as static final fields.
What can be seen on this line is an attempt to slightly optimize this method's execution, as it is well known that in interpreted code (and probably JIT-compiled code too) access to local variable in most JVM implementations is faster than access to class field, even if it's static.