我有增加BufferedImages到我的ArrayList的問題,以及它增加了他們,但是,還有更好的我展示一些代碼:ArrayList不添加BufferedImage?
}
}
}
this.listOfLines.add(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin));
this.image = fillWhite(xMin, yMin, xMax, yMax, this.image);
isWhite = white(this.image);
}
saveLines();
}
private void saveLines() {
for(int i = 0; i < this.listOfLines.size(); i++){
save(this.listOfLines.get(i), i);
}
}
這是一件發生問題的代碼。 (之前和之後的代碼並不重要,唯一需要知道的是有一個BufferedImage,並且我在循環中剪下了一些子圖像(這裏我找到了一些文本並希望將它們添加到listOfLines ArrayList中),然後填充原始圖像的區域爲白色,但是在將子圖像添加到列表後!)。底部的保存方法只是獲取一個BufferedImage並將其保存到特定的路徑,僅供檢查目的,我不想稍後保存所有內容,因爲這會導致圖像太多。
問題:如果我現在將圖像添加到listOfLines ArrayList並立即保存,則將原始圖像中的區域填充爲白色,然後在文件夾中查看它,它完美地工作。但在顯示的代碼中,問題是如果我在將原始圖像添加到數組列表後直接填充原始圖像,那麼數組列表中的圖像是白色的......但是爲什麼?
}
this.listOfLines.add(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin));
save(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin), n);
this.image = fillWhite(xMin, yMin, xMax, yMax, this.image);
isWhite = white(this.image);
}
希望我描述它準確:
保存每個子圖像(其中n是保存第n個圖像)時,其工作方式代碼/希望你能幫助我,或建議另一種方式。我的B計劃。將每一個圖像保存文件夾中,然後在ArrayList中再次讀取每一個形象,並與一個工作,但是這將是動力,我認爲浪費;)
問候
編輯:
好了,對於切割整個代碼是:
public void cutLines(){
boolean isWhite = false;
while(!isWhite){
int yMin = 0;
int yMax = 0;
int xMin = 0;
int xMax = this.image.getWidth();
boolean finished = false;
boolean active = false;
boolean lineWhite = false;
for(int i = 0; i < this.image.getHeight(); i++){
if(!finished){
if(!active){
for(int j = 0; j < this.image.getWidth(); j++){
if(this.image.getRGB(j, i) == Color.BLACK.getRGB()){
active = true;
yMin = i;
}
}
} else if(active){
lineWhite = true;
for(int j = 0; j < this.image.getWidth(); j++){
if(this.image.getRGB(j, i) == Color.BLACK.getRGB()){
lineWhite = false;
}
}
if(lineWhite){
active = false;
yMax = i;
finished = true;
}
}
}
}
this.listOfLines.add(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin));
this.image = fillWhite(xMin, yMin, xMax, yMax, this.image);
isWhite = white(this.image);
}
saveLines();
}
private void saveLines() {
for(int i = 0; i < this.listOfLines.size(); i++){
save(this.listOfLines.get(i), i);
}
}
如果有人想測試它自己,它需要一個黑白圖像(只是油漆,並鍵入2/3行文本)。如果您將最後一行更改爲:
listOfLines.add(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin));
save(this.image.getSubimage(xMin, yMin, xMax, yMax - yMin), n);
n++;
this.image = fillWhite(xMin, yMin, xMax, yMax, this.image);
isWhite = white(this.image);
它爲我節省了正確的圖像。但是在上面的代碼中,ArrayList中只有白色圖像。
''前後的代碼無關緊要......「' - 也許不是你,但它對我們大多數人都有用。您發佈的代碼片段,我們無法運行或測試,因此很難完全理解您的問題或您的問題。如果您非常需要正確的答案,請考慮通過創建併發布有效的[mcve]/[sscce](http://sscce.org)來改進您發佈的代碼。回覆前請檢查鏈接。 –