美文网首页
使用java生成心电图片

使用java生成心电图片

作者: 予你挚终_cc3a | 来源:发表于2019-01-28 16:12 被阅读0次
使用java生成心电图片主要运用到两个类“BufferedImage”和“Graphics2D”,当然这里只是简单的生成一个心电图片没有过多复杂的操作。废话不过说直接进入正题
先上一张效果图 oXVHv0L6IvRs5wfPwY6zSjE6eDCc-2-2018-09-28-15-37-39xl83.png
首先新建一个工具类 EcgImageUtils

IMGURL这个变量是我们图片保存的目录

private static String IMGURL="c:\\txihosServerFile\\xdimg\\";
    public EcgImageUtils(){
        
    }
    //第一个参数  心电数据源,第二个参数 保存的图片的名字,第三个参数  图片的宽,第四个参数 图片的高,第五个参数  心电显示的比例  这个比例可以自己根据实际情况 调节
    public static boolean getImg(List<Integer> count,String imgUrl,int width,int height,int gain){
        BufferedImage bi = new BufferedImage(width, height,BufferedImage.TYPE_INT_BGR );
        final File file = new File(IMGURL+imgUrl);
        boolean isReturn = false;
        try {
            if(file.exists()) { 
                isReturn=true;
            }else{
                file.createNewFile();
                if (writeImage(bi, "png", file,count,width,height,gain)) {
                    isReturn=true;
                }else {
                    isReturn=false;
                }
            }
        }catch(IOException e) {
            e.printStackTrace();
        }
        return isReturn;  
    }
    
    /** 通过指定参数写一个图片  */
    public static boolean writeImage(BufferedImage bi, String picType, File file,List<Integer> twoList,int width,int heigth,int gain) {
        Graphics2D g = bi.createGraphics();  
        int[] twoX = new int[twoList.size()]; 
        int[] twoY = new int[twoList.size()]; 
        int max = 0;
        for(int j=0;j<twoList.size();j++){
            twoX[j]=j*width/twoList.size();
            if (twoList.get(j)>max) {
                max = twoList.get(j);
            }
        }
        
        for(int i=twoList.size()-1;i>=0;i--){  
            twoY[i]=(max-Integer.valueOf(twoList.get(i)));
        }
        for(int m=0;m<twoY.length;m++){
            if (max>500) {
                twoY[m]=twoY[m]/gain+50;
            }else{
                twoY[m]=twoY[m]*gain+50;
            }
            
        }
        int wid=2;
         
        g.setColor(new Color(224,224,224));
        g.fillRect(0, 0, width, heigth);
        g.setColor(new Color(255, 0, 0));
        g.setStroke(new BasicStroke(wid));
        g.drawPolyline(twoX,twoY,twoY.length); 
        
        g.dispose(); 
        boolean val = false;
        try {
            val = ImageIO.write(bi, picType, file);
            System.out.println("绘图成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return val;
    }  
    
    //去除list中重复的数据并且保持原来的顺序不变
    public static void removeDuplicateWithOrder(List list) {    
        Set set = new HashSet();    
         List newList = new ArrayList();    
       for (Iterator iter = list.iterator(); iter.hasNext();) {    
             Object element = iter.next();    
             if (set.add(element))    
                newList.add(element);    
          }     
         list.clear();    
         list.addAll(newList);        
     }   

直接访问 EcgImageUrils.getImg(count,imgUrl,width,height,gain) 方法就可以了 当然了实际的显示效果根据自己的实际情况进行调节即可

相关文章

网友评论

      本文标题:使用java生成心电图片

      本文链接:https://www.haomeiwen.com/subject/eziajqtx.html