inheriting BufferedImage and using ImageIO.read()



So, I have a SubImage class which extends BufferedImage and I would like to use ImageIO.read() to create a SubImage, but since it returns a BufferedImage, I can't find a way of doing that.
Should I be using another design? or is there a way to get past this problem?
I would also add that right now my SubImage simply adds methods to the BufferedImage class. Yet downcasting causes an exception.
.