No se si me sabré explicar. ImageIcon crea un BufferedImage mientras que los otros dos devuelven una Image.
Image es un concepto genérico (clase abstracta) mientras que BufferedImage es la implementación de ese concepto genérico.
Yo te recomiendo usar ImageIcon ya que ya es una clase en si, que hereda de Image.
Image es un concepto genérico (clase abstracta) mientras que BufferedImage es la implementación de ese concepto genérico.
Yo te recomiendo usar ImageIcon ya que ya es una clase en si, que hereda de Image.