嘿,所有奇怪的問題。我的公司有另一家公司的應用程序,用於記錄通過以太網連接的攝像機拍攝的圖像。他們的應用程序是用C++編寫的,我一直試圖用Java轉換/破解它。在Java中從相機接收圖像時出現文物
我能夠接收圖像,但質量不一樣。在上面的照片是從他們的應用程序,並在底部的照片是從我:
任何想法,爲什麼這些文物都出現在我的版本用Java編寫的應用程序的呢?它發生在BMP和JPG圖像上。
它的工作方式就是通過套接字(C++和Java版本)......發送命令來捕獲圖像,並且相機通過發送數據(字節)進行響應。我再救一個字節數組,從他們創造一個新的BufferedImage:
// Create buffered image from bytes
image = ImageIO.read(new ByteArrayInputStream(imageBytes));
感謝您的任何輸入或想法。
嗯...在C++版本的圖像被保存到一個無符號的字符陣列。在Java中,我將它讀入字符串中,當我逐行讀取數據時(爲了檢查相機發送的數據標誌的結束)而連接。在將它讀入字符串之後,我將該字符串轉換爲字節。也許這是問題?實際上可能有很大的意義。 – 2010-08-27 14:20:41
請注意Java字節類型已簽名! – 2010-08-27 14:31:39
原來將其讀入字符串然後做.getBytes()是不一樣的INT讀它由INT成字節[]數組(帶鑄件)。它現在有效!這個答案讓我重新檢查和調查。 – 2010-08-31 19:09:14