如何在RFT中比較兩個影像檔案?
如何在RFT中比較兩個影像檔案?
下面指令碼截獲螢幕影像並儲存到檔案中,然後比較兩個影像檔案:
public void testMain(Object[] args)
{
CaptureScreen.captureScreen("C://tmp1.jpg");
startApp("calc");
計算器window().activate();
CaptureScreen.captureScreen("C://tmp2.jpg");
boolean result = compareImages("C://tmp1.jpg","C://tmp2.jpg");
if(result)
{
System.out.println("The two image are same!");
}
else
{
System.out.println("The two image are different.");
doImageDiff("C://tmp1.jpg","C://tmp2.jpg","C://tmp3.jpg");
}
}
captureScreen的寫法參考:
http://blog.csdn.net/Testing_is_believing/archive/2010/01/23/5247785.aspx
通過比較畫素點的方式比較兩個影像檔案:
public static boolean compareImages(String expectedImage, String actualImage)
{
BufferedImage expected = null, actual = null;
try
{
FileInputStream in = new FileInputStream(expectedImage);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
expected = decoder.decodeAsBufferedImage();
in.close();
in = new FileInputStream(actualImage);
decoder = JPEGCodec.createJPEGDecoder(in);
actual = decoder.decodeAsBufferedImage();
in.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#compareImages: error reading images: " + e);
return false;
}
if (expected == null || actual == null)
return false;
if (expected.getHeight() != actual.getHeight() || expected.getWidth() != actual.getWidth())
return false;
for (int y = 0; y < expected.getHeight(); ++y)
{
for (int x = 0; x < expected.getWidth(); ++x)
{
if (expected.getRGB(x, y) != actual.getRGB(x, y))
return false;
}
}
return true;
}
分析出兩個影像檔案不相等的地方,把差異的地方高亮顯示並儲存到影像檔案:
public static void doImageDiff(String expectedImage, String actualImage, String diffImage)
{
BufferedImage expected = null, actual = null;
try
{
FileInputStream in = new FileInputStream(expectedImage);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
expected = decoder.decodeAsBufferedImage();
in.close();
in = new FileInputStream(actualImage);
decoder = JPEGCodec.createJPEGDecoder(in);
actual = decoder.decodeAsBufferedImage();
in.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#doImageDiff: error reading images: " + e);
return;
}
try {
BufferedImage difference = new BufferedImage(expected.getWidth(), expected.getHeight(), expected.getType());
if (expected == null || actual == null)
{
System.out.println("Error in BitmapOps#doImageDiff: Expected image or actual image is null");
return;
}
if (expected.getHeight() != actual.getHeight() || expected.getWidth() != actual.getWidth())
{
System.out.println("Error in BitmapOps#doImageDiff: Images are not the same size");
return;
}
for (int y = 0; y < expected.getHeight(); ++y)
{
for (int x = 0; x < expected.getWidth(); ++x)
{
int rgb = expected.getRGB(x, y) - actual.getRGB(x, y);
difference.setRGB(x, y, rgb);
}
}
FileOutputStream out = new FileOutputStream(diffImage);
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
encoder.encode(difference);
out.flush();
out.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#doImageDiff: error writing image: " + e);
}
}
相關文章
- Kaleidoscope for Mac,檔案影像比較工具Mac
- 檔案和影像比較工具Kaleidoscope
- http協議中比較重要的幾個頭HTTP協議
- 在Linux中,如何比較兩個檔案差異?Linux
- 兩個coca略有不同詞頻檔案 比較
- Java 中比較 BigDecimal 的陷阱JavaDecimal
- Kaleidoscope for Mac(檔案和影像比較工具)Mac
- Mac檔案和影像比較工具:KaleidoscopeMac
- 檔案和影像比較工具:Kaleidoscope MacMac
- 機器學習中比較重要的幾個概念機器學習
- 比較兩個檔案,求出不同的內容,A-B
- Mac檔案和影像比較工具——Kaleidoscope for MacMac
- Mac檔案影像比較工具:Kaleidoscope Mac版Mac
- 巧用檔案影像比較工具Kaleidoscope,幫您找出檔案的不同
- .NET CORE下最快比較兩個檔案內容是否相同的方法
- 實用的檔案和影像比較工具:kaleidoscope mac版Mac
- 檔案影像比較工具:Kaleidoscope for Mac v4.2.2啟用版Mac
- 檔案影像比較工具:Kaleidoscope for Mac v4.2.1啟用版Mac
- 如何在Linux中查詢一個檔案Linux
- Linux給檔案隔兩個字元插入-Linux字元
- python 兩個檔案內容重疊部分Python
- 比較兩個table是否相同
- JavaScript比較兩個時間JavaScript
- 如何在 Acrobat Pro DC 與其它檔案合併建立單個 PDF 檔案?BAT
- Golang 超大檔案讀取的兩個方案Golang
- 檔案內容比較
- Halcon影像和檔案操作
- 比較兩個陣列是否相等陣列
- 如何在 Linux 中查詢最大的 10 個檔案Linux
- 怎樣查詢兩組專案檔案的不同之處?推薦使用Kaleidoscope開發者檔案比較工具!
- 替換掉的檔案怎麼恢復,兩個方法還原檔案
- 如何在Windows 11系統中將任意檔案(如bat/log等)固定在開始選單?WindowsBAT
- A 檔案 500MB,B 檔案 500MB,如何將兩檔案讀進記憶體,比較出其中的檔案內容差,再寫進 C 檔案雲?記憶體
- Python用shp檔案裁剪多個遙感影像的方法Python
- VisualDiffer for mac (檔案比較工具)Mac
- pandas比較兩個文件的差異
- matlab比較兩個矩陣是否相等Matlab矩陣
- Javers 比較兩個類的差異
- python如何比較兩個字串是否相等Python字串