ByteArrayInputStream in = new ByteArrayInputStream(byte[]b); //将b作为输入流; BufferedImage image = ImageIO.read(InputStream in); //将in作为输入流,读取图片存入image中,而这里in可以为ByteArrayInputStream();
参考文章
应用
缓存网络图片
//获得图片地址 Url img = new URL(url); //获得图片输入流 InputStream in = img.openStream(); //把输入流转为BufferedImage JPEGImageDecoder decoderFile = JPEGCodec.createJPEGDecoder(in); BufferedImage image = decoderFile.decodeAsBufferedImage(); //获得其byte数组 ImageIO.write(image, "jpg", bos); //写出 InputStream is = new ByteArrayInputStream(os.toByteArray());
具体测试与改动
URL url = new URL("http://www.google.com/intl/en_ALL/images/logo.gif"); BufferedImage image = ImageIO.read(url); ByteArrayOutputStream os = new ByteArrayOutputStream(); ImageIO.write(image, "gif", os); InputStream is = new ByteArrayInputStream(os.toByteArray());
FontMetrics fm = g.getFontMetrics(font); //从Graphics对象获取FontMetrics对象 int height = fm.getHeight(); //调用其getHeight()获得字高 int width = fm.stringWidth(s1); //获得字符串宽度
应用FontMetrics精确定位
String s1 = "Hello, Java World!"; g.setColor(Color.red); setBackground(new Color(0,255,0)); Font font = new Font("Arial", Font.BOLD, 18); g.setFont(font); FontMetrics fm = g.getFontMetrics(font); int height = fm.getHeight(); int width = fm.stringWidth(s1); int posx =50; int posy = 50; g.drawString(s1 ,posx, posy); g.drawString("I will come in." ,posx +width, posy+height);
GraphicsEnvironment gv = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] ftNames = gv.getAvailableFontFamilyNames(); for (int i=0; i<ftNames.length; i++) Font ft = new Font(ftNames[i], Font.BOLD, 14);
int px1[]={50,90,10,50};//首末点相重,才能画多边形 int py1[]={10,50,50,10}; int px2[]={140,180,170,180,140,100,110,140}; int py2[]={5,25,35,45,65,35,25,5}; g.setColor(Color.blue); g.fillPolygon(px1,py1,4); g.setColor(Color.red); g.drawPolygon(px2,py2,9);