Возможно, потому что загруженное изображение bi
никогда не рисуется на cstImg
.
Эта строка:
CustomImg cstImg = new CustomImg(bi.getWidth(), bi.getHeight(), bi.getType());
создает новое изображение на основе ширины, высоты и типа bi
... не содержимого bi
. Для этого вы, вероятно, хотите сделать что-то вроде
cstImg.getGraphics().drawImage(bi, 0, 0, null);