public class DisplayImage extends JFrame { public DisplayImage(boolean resize, boolean mapCountries) throws IOException { super("Province Map"); File mapProvinceFile = new File("map\\provinces.bmp"); BufferedImage mapProvinceImage = ImageIO.read(mapProvinceFile); byte[] pixels = (byte[])mapProvinceImage.getRaster().getDataElements(0, 0, mapProvinceImage.getWidth(), mapProvinceImage.getHeight(), null); if (mapCountries) { for (int i = 0; i < Victoria2Stats.provinceDefinitionArray.size(); i++) { for (int p = 0; p < pixels.length-3; p = p + 3) { if ((byte)Victoria2Stats.provinceDefinitionArray.get(i).rgb[0] == pixels[p]) { if ((byte)Victoria2Stats.provinceDefinitionArray.get(i).rgb[1] == pixels[p+1]) { if ((byte)Victoria2Stats.provinceDefinitionArray.get(i).rgb[2] == pixels[p+2]) { try { if ((Victoria2Stats.provinceDataTable[i].ownerColor == null) && !(Victoria2Stats.provinceDataTable[i].lifeRating == 0)) { pixels[p] = (byte)255; pixels[p+1] = (byte)255; pixels[p+2] = (byte)255; } else { pixels[p] = (byte)(Victoria2Stats.provinceDataTable[i].ownerColor.getRed()); pixels[p+1] = (byte)(Victoria2Stats.provinceDataTable[i].ownerColor.getBlue()); pixels[p+2] = (byte)(Victoria2Stats.provinceDataTable[i].ownerColor.getGreen()); } } catch (NullPointerException e) { System.out.println("Null Problem: " + i); } } } } } } } BufferedImage buffer = new BufferedImage(mapProvinceImage.getWidth(), mapProvinceImage.getHeight(), mapProvinceImage.getType()); DataBuffer dataBuffer = new DataBufferByte(pixels, pixels.length); SampleModel sampleModel = new ComponentSampleModel(DataBuffer.TYPE_BYTE, mapProvinceImage.getWidth(), mapProvinceImage.getHeight(), 3, mapProvinceImage.getWidth()*3, new int[]{0,1,2}); Raster raster = Raster.createRaster(sampleModel, dataBuffer, null); buffer.setData(raster); BufferedImage fixedImage = ImageUtils.verticalflip(buffer); ImageIcon ii = new ImageIcon(fixedImage); JScrollPane jsp = new JScrollPane(new JLabel(ii)); getContentPane().add(jsp); setSize(800, 600); setVisible(true); } }