java根据int数组画图
答案:3 悬赏:10 手机版
解决时间 2021-02-27 08:48
- 提问者网友:欲望失宠
- 2021-02-27 05:03
这里有一个图片的int型数组,数组的每个元素存储的是图片的一个像素的值,顺序是从左到右,从上到下,如何根据这个数组打印出图片?要有java程序。
最佳答案
- 五星知识达人网友:行路难
- 2021-02-27 05:50
public void printImage(int b[]) throws IOException
{
BufferedImage ImageNew = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0,0,width,height,b,0,width);//设置左半部分的RGB
File outFile = new File("E:\\out.JPG");
ImageIO.write(ImageNew, "png", outFile);//写图片
ImageProducer ip = new MemoryImageSource(width, height, b, 0,width);
final Image im2 = java.awt.Toolkit.getDefaultToolkit().createImage(ip);
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
g.drawImage(im2, 0, 0, 800, 600, this);
}
};
this.add(panel);
this.setSize(width,height);
setVisible(true);
}
{
BufferedImage ImageNew = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
ImageNew.setRGB(0,0,width,height,b,0,width);//设置左半部分的RGB
File outFile = new File("E:\\out.JPG");
ImageIO.write(ImageNew, "png", outFile);//写图片
ImageProducer ip = new MemoryImageSource(width, height, b, 0,width);
final Image im2 = java.awt.Toolkit.getDefaultToolkit().createImage(ip);
JPanel panel = new JPanel() {
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g) {
g.drawImage(im2, 0, 0, 800, 600, this);
}
};
this.add(panel);
this.setSize(width,height);
setVisible(true);
}
全部回答
- 1楼网友:北方的南先生
- 2021-02-27 07:13
给你个j2me的参考下
public static Image RGBreverseRGB(Image image) {
// System.out.println("reverseRGB IN");
int width = image.getWidth();
int height = image.getHeight();
// 获得图像的ARGB数据,存储在rawInt里
int[] raw = null;
try {
raw = new int[width * height];
image.getRGB(raw, 0, width, 0, 0, width, height);
int len = raw.length;
// 开始循环,获得图像里每个像素的颜色,然后处理
for (int i = 0; i < len; i++) {
// 获得像素的颜色
int color = raw[i];
// System.out.println(Integer.toHexString(color));
// 获得alpha
int alpha = 0xFF;
// System.out.println(Integer.toHexString(alpha));
// 获得红色
int red = (color & 0x00FF0000) >> 16;
// System.out.println(Integer.toHexString(red));
// 获得绿色
int green = (color & 0x0000FF00) >> 8;
// System.out.println(Integer.toHexString(green));
// 获得蓝色
int blue = (color & 0x000000FF);
// System.out.println(Integer.toHexString(blue));
// 翻转颜色
red = 0xFF - red;
green = 0xFF - green;
blue = 0xFF - blue;
// 生成新颜色
// System.out.println(Integer.toHexString((alpha << 24)+ (red <<
// 16)+(green << 8)));
color = (alpha << 24) + (red << 16) + (green << 8) + blue;
// System.out.println(Integer.toHexString(color));
raw[i] = color;
}
// System.out.println("blendRGB OUT");
return Image.createRGBImage(raw, width, height, true);
} catch (Error e) {
// e.printStackTrace();
// ImageAlbum.showAlert("图像尺寸太大,不能完成此操作.");
return image;
} catch (Exception e) {
e.printStackTrace();
return image;
} finally {
raw = null;
}
}
- 2楼网友:長槍戰八方
- 2021-02-27 06:24
public class Print {
public static void main(String[] args) {
int[][] s={{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,8}};
System.out.println(s[1][0]);
for(int i=0;i
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯