이 문제는 일치한다 :
Bitmap bitmap = Bitmap.createBitmap(comicBitmap, 0, i, width, i + everyPixel);
예를 들어, 당신은 width = 1000, height = 3000
하지만 everyPixel = 2000
있습니다. 사이클의 두 번째 반복에서 당신은 i = 2000
을 가질 것이고 왼쪽 = 0, 위쪽 = 2000, 너비 = 1000, 높이 = i + everyPixel = 4000으로 부분을 얻음으로써 comicbitmap에서 비트 맵을 만들려고 시도하지만 전체 비트 맵의 높이는 3000입니다. 이 오류가 발생합니다.
자세한 내용은 this 및 this을 참조하십시오.
private List<Bitmap> splitBitmap(File file, int everyPixel)
{
Bitmap comicBitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
List<Bitmap> segments = new ArrayList<>();
if(comicBitmap == null)
return segments;
int height = comicBitmap.getHeight();
int width = comicBitmap.getWidth();
for(int i = 0; i < height; i += everyPixel)
{
i = i >= height? height : i;
int limit = i + everyPixel >= height? height - i : everyPixel;
Bitmap bitmap = Bitmap.createBitmap(comicBitmap, 0, i, width, limit);
segments.add(bitmap);
}
return segments;
}
공지 사항 라인 :
i = i >= height? height : i;
int limit = i + everyPixel >= height? height - i : everyPixel;
이 실제로 모든 픽셀이 고려되어 있는지 확인
해결책을 찾았습니까? –