Da Java 1.4 esiste la API ImageIO (classe principale javax.imageio.ImageIO).
Con la ImageIO puoi caricare le due immagini e ottieni due BufferedImage. Poi crei un terzo BufferedImage con le dimensioni giuste per l'affiancamento (nel senso di espansione che vuoi). Vedi costruttore BufferedImage(int width, int height, int imageType). Come imageType puoi usare TYPE_INT_ARGB se ti serve il canale alpha oppure solo TYPE_INT_RGB.
Poi prendi il Graphics/Graphics2D del nuovo BufferedImage e dentro ci "disegni" le due immagini. Fai il dispose() del Graphics(2D) e infine puoi salvare la immagine di nuovo con la ImageIO.
Segui la documentazione javadoc per le classi indicate ... è più semplice di quanto credi.
Non serve arrivare ai vettori di pixel.![]()