导航:首页 > 使用方法 > java简述常用的访问图像的三种方法

java简述常用的访问图像的三种方法

发布时间:2023-03-26 15:55:22

❶ Java的图像算法

//没听懂你的需求,能更清楚一些吗?隐档

我以前的一个程序使用BufferedImage读取图灶槐乱像像素点的RGB值,例子在下面。

你从例子中了解一下用一个整数表示RGB颜色的方法。然后用setRGB方法满足你的要求。

方法:
java.awt.image.BufferedImage

public int getRGB(int x,int y)
返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素。如果此默认模型与该图像的 ColorModel 不匹配,则发生颜色转换。在使用此方法所返回的数据中,每个颜色分量只有 8 位精度。

public void setRGB(int x, int y,int rgb)
将此 BufferedImage 中的像素设置为指定的 RGB 值。假明孝定该像素使用默认 RGB 颜色模型、TYPE_INT_ARGB 和默认 sRGB 颜色空间。对于具有 IndexColorModel 的图像,则选择最接近的颜色的索引。
参数:
x - 要设置的像素的 X 坐标
y - 要设置的像素的 Y 坐标
rgb - RGB 值

例子:(获取RGB值)---了解一下用一个整数表示RGB颜色的方法
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;

public class Test{
public static void main(String args[]) {
int[] rgb = new int[3];

File file = new File("a.bmp");
BufferedImage bi=null;
try{
bi = ImageIO.read(file);
}catch(Exception e){
e.printStackTrace();
}

int width=bi.getWidth();
int height=bi.getHeight();
int minx=bi.getMinX();
int miny=bi.getMinY();
System.out.println("width="+width+",height="+height+".");
System.out.println("minx="+minx+",miniy="+miny+".");

for(int i=minx;i<width;i++){
for(int j=miny;j<height;j++){
//System.out.print(bi.getRGB(jw, ih));
int pixel=bi.getRGB(i, j);
rgb[0] = (pixel & 0xff0000 ) >> 16 ;
rgb[1] = (pixel & 0xff00 ) >> 8 ;
rgb[2] = (pixel & 0xff );
System.out.println("i="+i+",j="+j+":("+rgb[0]+","+rgb[1]+","+rgb[2]+")");

}
}

}

}

❷ java工程src目录中的java文件,怎么访问src同级目录photos里面的图片

新建resources文件夹,把photos移到这个文件游败迹夹神并,把resources加到Build Path.然后枯亏用ClassLoader的loadXxxXX方法导入资源。

❸ 怎么用java从文件中读取图片和写入图片到文件里

首先导入各种需要的包:
import java.awt.Image;
import javax.imageio.ImageIO;
import java.io.*;
读取图片的方法如下:
Image[] array = new Image[10];
Image image = ImageIO.read(new File("d:\\source.gif"));/芹手/根据你实际情况改文件路径吧
array[0] = image;
图片读出来了。

如果你有一个嫌纳嫌Image对象,想把它写入文件可以这样做:
BufferedImage image = ImageIO.read(new File("d:\\source.gif"));
//要想保存这个对象的话你要把image声明为BufferedImage 类型茄渣
ImageIO.write(image, "png", new File("f:\\test.png"));

❹ JAVA drawImage

java.awt.image
接口拿宴 ImageObserver
所有已知乎世实现类:
AbstractButton, AbstractColorChooserPanel, Applet, BasicArrowButton, BasicComboBoxRenderer, BasicComboBoxRenderer.UIResource, BasicComboPopup, BasicInternalFrameTitlePane, BasicInternalFrameTitlePane.SystemMenuBar, BasicSplitPaneDivider, BasicToolBarUI.DragWindow, Box, Box.Filler, Button, Canvas, CellRendererPane, Checkbox, Choice, Component, Container, DefaultListCellRenderer, DefaultListCellRenderer.UIResource, DefaultTableCellRenderer, DefaultTableCellRenderer.UIResource, DefaultTreeCellEditor.DefaultTextField, DefaultTreeCellEditor.EditorContainer, DefaultTreeCellRenderer, Dialog, FileDialog, Frame, JApplet, JButton, JCheckBox, JCheckBoxMenuItem, JColorChooser, JComboBox, JComponent, JDesktopPane, JDialog, JEditorPane, JFileChooser, JFormattedTextField, JFrame, JInternalFrame, JInternalFrame.JDesktopIcon, JLabel, JLayeredPane, JList, JMenu, JMenuBar, JMenuItem, JOptionPane, JPanel, JPasswordField, JPopupMenu, JPopupMenu.Separator, JProgressBar, JRadioButton, JRadioButtonMenuItem, JRootPane, JScrollBar, JScrollPane, JScrollPane.ScrollBar, JSeparator, JSlider, JSpinner, JSpinner.DateEditor, JSpinner.DefaultEditor, JSpinner.ListEditor, JSpinner.NumberEditor, JSplitPane, JTabbedPane, JTable, JTableHeader, JTextArea, JTextComponent, JTextField, JTextPane, JToggleButton, JToolBar, JToolBar.Separator, JToolTip, JTree, JViewport, JWindow, Label, List, MetalComboBoxButton, MetalComboBoxUI.MetalComboPopup, MetalFileChooserUI.FileRenderer, MetalFileChooserUI.FilterComboBoxRenderer, MetalInternalFrameTitlePane, MetalScrollButton, Panel, Scrollbar, ScrollPane, TextArea, TextComponent, TextField, Window

--------------------------------------------------------------------------------

public interface ImageObserver用于在构造 Image 时,接收有关 Image 信息岁敏肢通知的异步更新接口。

--------------------------------------------------------------------------------

字段摘要
static int ABORT
imageUpdate 的 infoflags 参数中的此标志指示被异步跟踪的图像在生成完成前即已中止。
static int ALLBITS
imageUpdate 的 infoflags 参数中的此标志指示现在已完成了一幅以前绘制的静态图像,并且可以其最终形式再次绘制它。
static int ERROR
imageUpdate 的 infoflags 参数中的此标志指示被异步跟踪的图像遇到了错误。
static int FRAMEBITS
imageUpdate 的 infoflags 参数中的此标志指示多帧图像(以前绘制的)的另一个完整帧现在可以再次绘制。
static int HEIGHT
imageUpdate 的 infoflags 参数中的此标志指示基本图像的高度现在可用,并且可从 height 参数中获取此高度到 imageUpdate 回调方法。
static int PROPERTIES
imageUpdate 的 infoflags 参数中的此标志指示该图像的属性现在可用。
static int SOMEBITS
imageUpdate 的 infoflags 参数中的此标志指示已提供了绘制图像缩放变体所需的更多像素。
static int WIDTH
imageUpdate 的 infoflags 参数中的此标志指示基本图像的宽度现在可用,并且可从 width 参数中获取此宽度到 imageUpdate 回调方法。
方法摘要
boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height)
当以前使用异步接口所请求的图像的信息变得可用时就调用此方法。

字段详细信息

WIDTH
static final int WIDTHimageUpdate 的 infoflags 参数中的此标志指示基本图像的宽度现在可用,并且可从 width 参数中获取此宽度到 imageUpdate 回调方法。

另请参见:
Image.getWidth(java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

HEIGHT
static final int HEIGHTimageUpdate 的 infoflags 参数中的此标志指示基本图像的高度现在可用,并且可从 height 参数中获取此高度到 imageUpdate 回调方法。

另请参见:
Image.getHeight(java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

PROPERTIES
static final int PROPERTIESimageUpdate 的 infoflags 参数中的此标志指示该图像的属性现在可用。

另请参见:
Image.getProperty(java.lang.String, java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

SOMEBITS
static final int SOMEBITSimageUpdate 的 infoflags 参数中的此标志指示已提供了绘制图像缩放变体所需的更多像素。可从 x、y、width 和 height 参数中获取新像素的边界框到 imageUpdate 回调方法。

另请参见:
Graphics.drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

FRAMEBITS
static final int FRAMEBITSimageUpdate 的 infoflags 参数中的此标志指示多帧图像(以前绘制的)的另一个完整帧现在可以再次绘制。应该忽略 imageUpdate 回调方法的 x、y、width 和 height 参数。

另请参见:
Graphics.drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

ALLBITS
static final int ALLBITSimageUpdate 的 infoflags 参数中的此标志指示现在已完成了一幅以前绘制的静态图像,并且可以其最终形式再次绘制它。应该忽略 imageUpdate 回调方法的 x、y、width 和 height 参数。

另请参见:
Graphics.drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver), imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

ERROR
static final int ERRORimageUpdate 的 infoflags 参数中的此标志指示被异步跟踪的图像遇到了错误。没有更多信息可用,并且图像绘制将失败。出于方便的考虑,同时还将指定 ABORT 标志,以指示图像生成已中止。

另请参见:
imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值

--------------------------------------------------------------------------------

ABORT
static final int ABORTimageUpdate 的 infoflags 参数中的此标志指示被异步跟踪的图像在生成完成前即已中止。在没有进一步的动作以触发另一个图像生成序列的情况下,没有更多可用信息。如果在此图像更新中没有设置 ERROR 标志,则访问图像中的任何数据都会再次重新开始图像的生成(可能是从头开始)。

另请参见:
imageUpdate(java.awt.Image, int, int, int, int, int), 常量字段值
方法详细信息

imageUpdate
boolean imageUpdate(Image img,
int infoflags,
int x,
int y,
int width,
int height)当以前使用异步接口所请求的图像的信息变得可用时就调用此方法。异步接口是将 ImageObserver 对象作为参数的方法调用,如 getWidth(ImageObserver) 和 drawImage(img, x, y, ImageObserver)。这些方法要么将调用方注册为对有关总体图像本身的信息感兴趣(对于 getWidth(ImageObserver)),要么注册为对有关图像输出版本的信息感兴趣(对于调用 drawImage(img, x, y, [w, h,] ImageObserver))。
如果需要进一步的更新,则此方法应该返回 true,如果已获得所需的信息,则应返回 false。使用 img 参数传入所跟踪的图像。组合各种常量即可形成 infoflags 参数,指示哪种图像信息现在可用。对 x、y、width 和 height 参数的解释取决于 infoflags 参数的内容。

infoflags 参数应该是对下列标志按位进行 OR 运算后的结果:WIDTH、HEIGHT、PROPERTIES、SOMEBITS、FRAMEBITS、ALLBITS、ERROR、ABORT。

参数:
img - 正在观察的图像。
infoflags - 下列标志按位 OR 运算后的结果:WIDTH、HEIGHT、PROPERTIES、SOMEBITS、FRAMEBITS、ALLBITS、ERROR、ABORT。
x - x 坐标。
y - y 坐标。
width - 宽度。
height - 高度。
返回:
如果 infoflags 指示已完全加载了图像,则返回 false;否则返回 true。
另请参见:
WIDTH, HEIGHT, PROPERTIES, SOMEBITS, FRAMEBITS, ALLBITS, ERROR, ABORT, Image.getWidth(java.awt.image.ImageObserver), Image.getHeight(java.awt.image.ImageObserver), Graphics.drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver)

❺ java项目打包成jar不能访问图片问题

一、通过使用外部资源文件的方式解决
把液亮哪项目打包生成Jar后,再新建一文件夹,把项目中所有使用的图片文件和生成Jar文件放在该目录下,只要代码对图片文件的引用路径正确,如:ImageIcon image=new ImageIcon(SwingResourceManager.getImage("imagefilePath"));就可以了。
这种方式下,图片文件与类文件不是一块放在包中的,类文件在包中,而图片文键扰件在项目根目录下。
二、通过使用内部资源文件的方式解决
把所用的图片文件放在项目使用的包中,打包时把图片文件同时打进Jar文件中。这种方式在具体代码中应使用下面其中一种:
1.ImageIcon image = new ImageIcon(this.getClass().getResource("imagefilePath"));
2.ImageIcon image = new ImageIcon(main.class.getResource("imagefilePath"));
3.ImageIcon = SwingResourceManager.getImage(main.class,"imagefilePath");
4.3.ImageIcon = SwingResourceManager.getImage(this.getClass(),"imagefilePath");
3和4中第一个参数代表图片文件路径的参照对象,不能少,否则不能正确获得图片资源。

最后,朋友们一定要注意大小写的问题,在项目中文件名的大小写没有影响闹码,但是打包后,就必须注意文件名大小写问题了,否则也是不行的。

❻ java数字图像处理常用算法


前些时候做毕业设计 用java做的数字图像处理方面的东西 这方面的资料ms比较少 发点东西上来大家共享一下 主要就是些算法 有自己写的 有人家的 还有改人家的 有的算法写的不好 大家不要见笑

一 读取bmp图片数据

// 获取待检测图像 数据保存在数组 nData[] nB[] nG[] nR[]中

public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs = null; try { fs = new FileInputStream(source); int bfLen = ; byte bf[] = new byte[bfLen]; fs read(bf bfLen); // 读取 字节BMP文件头 int biLen = ; byte bi[] = new byte[biLen]; fs read(bi biLen); // 读取 字节BMP信息头

// 源图宽度 nWidth = (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (int) bi[ ] & xff;

// 源图高度 nHeight = (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (int) bi[ ] & xff;

// 位数 nBitCount = (((int) bi[ ] & xff) << ) | (int) bi[ ] & xff;

// 源图大小 int nSizeImage = (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (((int) bi[ ] & xff) << ) | (int) bi[ ] & xff;

// 对 位BMP进行解析 if (nBitCount == ){ int nPad = (nSizeImage / nHeight) nWidth * ; nData = new int[nHeight * nWidth]; nB=new int[nHeight * nWidth]; nR=new int[nHeight * nWidth]; nG=new int[nHeight * nWidth];键带 byte bRGB[] = new byte[(nWidth + nPad) * * nHeight]; fs read(bRGB (nWidth + nPad) * * nHeight); int nIndex = ; for (int j = ; j < nHeight; j++){ for (int i = ; i < nWidth; i++) { nData[nWidth * (nHeight j ) + i] = ( & xff) << | (((int) bRGB[nIndex + ] & xff) << ) | (((int) bRGB[nIndex + ] & xff) << ) | (int) bRGB[nIndex] & xff; nB[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex]& xff; nG[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex+ ]& xff; nR[nWidth * (nHeight j ) + i]=(int) bRGB[nIndex+ ]& xff;稿物芦 nIndex += ; } nIndex += nPad; }// Toolkit kit = Toolkit getDefaultToolkit();// image = kit createImage(new MemoryImageSource(nWidth nHeight // nData nWidth));

/*蚂册 //调试数据的读取

FileWriter fw = new FileWriter( C:\Documents and Settings\Administrator\My Documents\nDataRaw txt );//创建新文件 PrintWriter out = new PrintWriter(fw); for(int j= ;j<nHeight;j++){ for(int i= ;i<nWidth;i++){ out print(( * +nData[nWidth * (nHeight j ) + i])+ _ +nR[nWidth * (nHeight j ) + i]+ _ +nG[nWidth * (nHeight j ) + i]+ _ +nB[nWidth * (nHeight j ) + i]+ ); } out println( ); } out close();*/ } } catch (Exception e) { e printStackTrace(); throw new Exception(e); } finally { if (fs != null) { fs close(); } } // return image; }

二由r g b 获取灰度数组

public int[] getBrightnessData(int rData[] int gData[] int bData[]){ int brightnessData[]=new int[rData length]; if(rData length!=gData length || rData length!=bData length || bData length!=gData length){ return brightnessData; } else { for(int i= ;i<bData length;i++){ double temp= *rData[i]+ *gData[i]+ *bData[i]; brightnessData[i]=(int)(temp)+((temp (int)(temp))> ? : ); } return brightnessData; } }

三 直方图均衡化

public int [] equilibrateGray(int[] PixelsGray int width int height) { int gray; int length=PixelsGray length; int FrequenceGray[]=new int[length]; int SumGray[]=new int[ ]; int ImageDestination[]=new int[length]; for(int i = ; i <length ;i++) { gray=PixelsGray[i]; FrequenceGray[gray]++; } // 灰度均衡化 SumGray[ ]=FrequenceGray[ ]; for(int i= ;i< ;i++){ SumGray[i]=SumGray[i ]+FrequenceGray[i]; } for(int i= ;i< ;i++) { SumGray[i]=(int)(SumGray[i]* /length); } for(int i= ;i<height;i++) { for(int j= ;j<width;j++) { int k=i*width+j; ImageDestination[k]= xFF | ((SumGray[PixelsGray[k]]<< ) | (SumGray[PixelsGray[k]]<< ) | SumGray[PixelsGray[k]]); } } return ImageDestination; }

四 laplace 阶滤波 增强边缘 图像锐化

public int[] laplace DFileter(int []data int width int height){ int filterData[]=new int[data length]; int min= ; int max= ; for(int i= ;i<height;i++){ for(int j= ;j<width;j++){ if(i== || i==height || j== || j==width ) filterData[i*width+j]=data[i*width+j]; else filterData[i*width+j]= *data[i*width+j] data[i*width+j ] data[i*width+j+ ] data[(i )*width+j] data[(i )*width+j ] data[(i )*width+j+ ] data[(i+ )*width+j] data[(i+ )*width+j ] data[(i+ )*width+j+ ]; if(filterData[i*width+j]<min) min=filterData[i*width+j]; if(filterData[i*width+j]>max) max=filterData[i*width+j]; } }// System out println( max: +max);// System out println( min: +min); for(int i= ;i<width*height;i++){ filterData[i]=(filterData[i] min)* /(max min); } return filterData; }

五 laplace 阶增强滤波 增强边缘 增强系数delt

public int[] laplaceHigh DFileter(int []data int width int height double delt){ int filterData[]=new int[data length]; int min= ; int max= ; for(int i= ;i<height;i++){ for(int j= ;j<width;j++){ if(i== || i==height || j== || j==width ) filterData[i*width+j]=(int)(( +delt)*data[i*width+j]); else filterData[i*width+j]=(int)(( +delt)*data[i*width+j] data[i*width+j ]) data[i*width+j+ ] data[(i )*width+j] data[(i )*width+j ] data[(i )*width+j+ ] data[(i+ )*width+j] data[(i+ )*width+j ] data[(i+ )*width+j+ ]; if(filterData[i*width+j]<min) min=filterData[i*width+j]; if(filterData[i*width+j]>max) max=filterData[i*width+j]; } } for(int i= ;i<width*height;i++){ filterData[i]=(filterData[i] min)* /(max min); } return filterData; } 六 局部阈值处理 值化

// 局部阈值处理 值化 niblack s method /*原理 T(x y)=m(x y) + k*s(x y) 取一个宽度为w的矩形框 (x y)为这个框的中心 统计框内数据 T(x y)为阈值 m(x y)为均值 s(x y)为均方差 k为参数(推荐 )计算出t再对(x y)进行切割 / 这个算法的优点是 速度快 效果好 缺点是 niblack s method会产生一定的噪声 */ public int[] localThresholdProcess(int []data int width int height int w int h double coefficients double gate){ int[] processData=new int[data length]; for(int i= ;i<data length;i++){ processData[i]= ; } if(data length!=width*height) return processData; int wNum=width/w; int hNum=height/h; int delt[]=new int[w*h]; //System out println( w; +w+ h: +h+ wNum: +wNum+ hNum: +hNum); for(int j= ;j<hNum;j++){ for(int i= ;i<wNum;i++){ //for(int j= ;j< ;j++){ //for(int i= ;i< ;i++){ for(int n= ;n<h;n++) for(int k= ;k<w;k++){ delt[n*w+k]=data[(j*h+n)*width+i*w+k]; //System out print( delt[ +(n*w+k)+ ]: +delt[n*w+k]+ ); } //System out println(); /* for(int n= ;n<h;n++) for(int k= ;k<w;k++){ System out print( data[ +((j*h+n)*width+i*w+k)+ ]: +data[(j*h+n)*width+i*w+k]+ ); } System out println(); */ delt=thresholdProcess(delt w h coefficients gate); for(int n= ;n<h;n++) for(int k= ;k<w;k++){ processData[(j*h+n)*width+i*w+k]=delt[n*w+k]; // System out print( delt[ +(n*w+k)+ ]: +delt[n*w+k]+ ); } //System out println(); /* for(int n= ;n<h;n++) for(int k= ;k<w;k++){ System out print( processData[ +((j*h+n)*width+i*w+k)+ ]: +processData[(j*h+n)*width+i*w+k]+ ); } System out println(); */ } } return processData; }

七 全局阈值处理 值化

public int[] thresholdProcess(int []data int width int height double coefficients double gate){ int [] processData=new int[data length]; if(data length!=width*height) return processData; else{ double sum= ; double average= ; double variance= ; double threshold; if( gate!= ){ threshold=gate; } else{ for(int i= ;i<width*height;i++){ sum+=data[i]; } average=sum/(width*height); for(int i= ;i<width*height;i++){ variance+=(data[i] average)*(data[i] average); } variance=Math sqrt(variance); threshold=average coefficients*variance; } for(int i= ;i<width*height;i++){ if(data[i]>threshold) processData[i]= ; else processData[i]= ; } return processData; } }

八 垂直边缘检测 sobel算子

public int[] verticleEdgeCheck(int []data int width int height int sobelCoefficients) throws Exception{ int filterData[]=new int[data length]; int min= ; int max= ; if(data length!=width*height) return filterData; try{ for(int i= ;i<height;i++){ for(int j= ;j<width;j++){ if(i== || i== || i==height || i==height ||j== || j== || j==width || j==width ){ filterData[i*width+j]=data[i*width+j]; } else{ double average; //中心的九个像素点 //average=data[i*width+j] Math sqrt( )*data[i*width+j ]+Math sqrt( )*data[i*width+j+ ] average=data[i*width+j] sobelCoefficients*data[i*width+j ]+sobelCoefficients*data[i*width+j+ ] data[(i )*width+j ]+data[(i )*width+j+ ] data[(i+ )*width+j ]+data[(i+ )*width+j+ ]; filterData[i*width+j]=(int)(average); } if(filterData[i*width+j]<min) min=filterData[i*width+j]; if(filterData[i*width+j]>max) max=filterData[i*width+j]; } } for(int i= ;i<width*height;i++){ filterData[i]=(filterData[i] min)* /(max min); } } catch (Exception e) { e printStackTrace(); throw new Exception(e); } return filterData; }

九 图像平滑 * 掩模处理(平均处理) 降低噪声

lishixin/Article/program/Java/hx/201311/26286

阅读全文

与java简述常用的访问图像的三种方法相关的资料

热点内容
佛手兰花的养殖方法视频 浏览:700
通信电缆长度计算方法 浏览:597
抽屉盒密封条安装方法 浏览:688
披萨饼皮还可以怎么吃简单方法 浏览:250
紫薯的食用方法与功效 浏览:803
生地食用方法 浏览:247
房屋检测的方法 浏览:171
卡丁车一拖三刹车安装方法 浏览:917
易经的简单算卦方法 浏览:514
怎么挑战干吃柠檬的方法 浏览:807
常见疾病的康复锻炼方法胃肠炎 浏览:612
急性乳腺炎最佳治疗方法 浏览:872
喇叭如何增强手机通讯信号的方法 浏览:834
yaman溶脂使用方法 浏览:360
食管癌iva期治疗方法 浏览:824
跟腱撕裂康复期锻炼方法视频 浏览:241
链霉素鉴别方法不包括 浏览:371
小胃结石的治疗方法 浏览:896
双层气球拱门制作方法视频 浏览:233
棘上韧带炎锻炼方法 浏览:853