使用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) 方法就可以了 当然了实际的显示效果根据自己的实际情况进行调节即可
网友评论