想做一个网站根据提交图片识别解析二维码,想从内存流中读取图片信息,求zxing内存流接口~~~~~

斯乌和凹 发布于 2016/08/22 12:52
阅读 795
收藏 1
因为这个接口是文件路径,但是做网站不能这样读取,想直接从内存流中读取,求教大神应该这么做?~~~


public void testDecode()


{  
        String filePath = "k://zxing.png";  
        BufferedImage image;  
        try {  
            image = ImageIO.read(new File(filePath));  
            LuminanceSource source = new BufferedImageLuminanceSource(image);  
            Binarizer binarizer = new HybridBinarizer(source);  
            BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);  
            Map<DecodeHintType, Object> hints = new HashMap<DecodeHintType, Object>();  
            hints.put(DecodeHintType.CHARACTER_SET, "UTF-8");  
            Result result = new MultiFormatReader().decode(binaryBitmap, hints);// 对图像进行解码 
            JSONObject content = JSONObject.fromObject(result.getText()); 
            System.out.println("图片中内容:  ");  
            System.out.println("author: " + content.getString("author"));  
            System.out.println("zxing:  " + content.getString("zxing"));  
            System.out.println("图片中格式:  ");  
            System.out.println("encode: " + result.getBarcodeFormat());  
            
            
            
            
            
        }
        catch (IOException e) 
        {  
            e.printStackTrace();  
        } 
        catch (NotFoundException e)
        {  
            e.printStackTrace();  
        }  





    }  

加载中
0
szwx855
szwx855
public static void main(String []args)throws Exception{   
        String text = "你好";   
        int width = 100;   
        int height = 100;   
        String format = "png";   
        Hashtable hints= new Hashtable();   
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");   
         BitMatrix bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height,hints);   
         File outputFile = new File("new.png"); 
         //这里你可以通过socket接收流数据,拼装成图片,参考二代码
         MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);   
            



    }   

二:
package cn.cctv.net;  
import java.io.ByteArrayOutputStream;  
import java.io.File;  
import java.io.FileOutputStream;  
import java.io.InputStream;  
import java.net.HttpURLConnection;  
import java.net.URL;  
public class ImageRequest {  
    /** 
     * @param args 
     */  
    public static void main(String[] args) throws Exception {  
        //new一个URL对象   
        URL url = new URL("http://img.hexun.com/2011-06-21/130726386.jpg");  
        //打开链接   
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();  
        //设置请求方式为"GET"   
        conn.setRequestMethod("GET");  
        //超时响应时间为5秒   
        conn.setConnectTimeout(5 * 1000);  
        //通过输入流获取图片数据   
        InputStream inStream = conn.getInputStream();  
        //得到图片的二进制数据,以二进制封装得到数据,具有通用性   
        byte[] data = readInputStream(inStream);  
        //new一个文件对象用来保存图片,默认保存当前工程根目录   
        File imageFile = new File("BeautyGirl.jpg");  
        //创建输出流   
        FileOutputStream outStream = new FileOutputStream(imageFile);  
        //写入数据   
        outStream.write(data);  
        //关闭输出流   
        outStream.close();  
    }  
    public static byte[] readInputStream(InputStream inStream) throws Exception{  
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
        //创建一个Buffer字符串   
        byte[] buffer = new byte[1024];  
        //每次读取的字符串长度,如果为-1,代表全部读取完毕   
        int len = 0;  
        //使用一个输入流从buffer里把数据读取出来   
        while( (len=inStream.read(buffer)) != -1 ){  
            //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度   
            outStream.write(buffer, 0, len);  
        }  
        //关闭输入流   
        inStream.close();  
        //把outStream里的数据写入内存   
        return outStream.toByteArray();  
    }  
}



斯乌和凹
谢谢您的回答~,我想做一个图片不用存储在服务器上,解析完生成内容字符串后,直接自动删除缓存的方法~
0
szwx855
szwx855
可以使用apache中的FileUtils.copy方法。来完成流copy,生成一个文件,然后你读取这个文件生成二维码。生成完毕后,删除刚才生成的这个文件即可。
斯乌和凹
谢谢您的回答,我试试~
0
b
beastxiao
我以前也打算做个,发现开源中国有这工具,就没做了
b
beastxiao
回复 @斯乌和凹 : web端没开源,只有移动端开源了
斯乌和凹
回复 @beastxiao : 请问这个源码什么的能下载吗?
斯乌和凹
回复 @beastxiao : 谢谢大神~~
b
beastxiao
http://tool.oschina.net/qr?type=2
斯乌和凹
谢谢你~求连接或者项目名称啊,不好意思没找到~
返回顶部
顶部