- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图分离图像中的红色、绿色和蓝色值,并对数组进行一些排列。完成排列后,我尝试写入图像,但在将像素值写入整数时发现异常。
异常(exception)情况是:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 272
at encryption.core.receiveFramePath(core.java:203)
at encryption.fny.jButton3ActionPerformed(fny.java:657)
at encryption.fny.access$900(fny.java:14)
java代码是:
public class core {
Random rand = new Random();
public void receiveFramePath(String[] fpath, String key)
{
System.out.println("Number of frames to be processed are " + fpath.length);
System.out.println("Key received is " + key);
int len;
len = key.length();
//String part1, part2;
String part1 = key.substring(0, 2);
String part2 = key.substring(2, len);
System.out.println("Message to be splitted is " + key);
System.out.println("The parts are " + part1 + " and " + part2);
int fC ;// this is frmaeCount
fC = fpath.length;
System.out.println(" No of strings to be processed are " + fC);
BufferedImage[] img = new BufferedImage[fC];
int i;// to run the for loop
for( i = 0; i < fC; i++ )
{
// Code to read the image pixel values
File f = new File(fpath[i]);
try {
img[i] = ImageIO.read(f);
}
catch(Exception e)
{
e.printStackTrace();
}
int[] RGBarray = null;
int c = 0;
int r = 0;
int [][] alphaPixels = null;
int [][] redPixels = null;
int [][] greenPixels = null;
int [][] bluePixels =null;
c = img[i].getWidth();
r = img[i].getHeight();
//System.out.println(" Width of the image is " + c + " The height of the image is " + r);
RGBarray = img[i].getRGB(0,0,c,r,null,0,c);
alphaPixels = new int [r][c];
redPixels = new int [r][c];
greenPixels = new int [r][c];
bluePixels = new int [r][c];
int ii = 0;// to run inside seperating a loop
for(int row=0; row<r; row++)
{
for(int col=0; col<c; col++)
{
// alphaPixels[row][col] = ((RGBarray[ii]>>24)&0xff);
redPixels[row][col] = ((RGBarray[ii]>>16)&0xff);
greenPixels[row][col] = ((RGBarray[ii]>>8)&0xff);
bluePixels[row][col] = (RGBarray[ii]&0xff);
ii++;
}
}
// code to read the image pixel values ends here
// Fisher alg starts here
// logic for permutation on red pixels
for ( int ro = 0; ro < r ; ro++)
{
int[] arr = new int[c];
for (int co = 0; co < c; co++)
{
arr[co] = redPixels[ro][co];
}
int max = arr.length - 1;
int min = 0;
int rnum;
int larr = arr.length - 1;
int[] parr = new int[arr.length];// to store the permuted array
int flag = 0;// 'flag' to flag the recurring number
int plen = parr.length - 1;
for(int z = 0 ; z < arr.length ; z++)
{
rnum = (rand.nextInt((max-min)+1) + min);// roll for the random number
parr[plen] = arr[rnum];
arr[rnum] = arr[larr];
larr--;// to reduce the size of the original array
plen--;// to make the parr to act like a stack
max--;
}
for(int z = 0; z<arr.length;z++ )
{
redPixels[ro][z] = parr[z];
}
}
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& redPixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& redPixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& redPixels permuatation ends here
// logic for permutation on GREEEEN pixels
// logic for permutation on GREEEEN pixels
// logic for permutation on GREEEEN pixels
for ( int ro = 0; ro < r ; ro++)
{
int[] arr = new int[c];
for (int co = 0; co < c; co++)
{
arr[co] = greenPixels[ro][co];
}
int max = arr.length - 1;
int min = 0;
int rnum;
int larr = arr.length - 1;
int[] parr = new int[arr.length];// to store the permuted array
int flag = 0;// 'flag' to flag the recurring number
int plen = parr.length - 1;
for(int z = 0 ; z < arr.length ; z++)
{
rnum = (rand.nextInt((max-min)+1) + min);// roll for the random number
parr[plen] = arr[rnum];
arr[rnum] = arr[larr];
larr--;// to reduce the size of the original array
plen--;// to make the parr to act like a stack
max--;
}
for(int z = 0; z<arr.length;z++ )
{
greenPixels[ro][z] = parr[z];
}
}
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& greenPixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& greenPixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& greenPixels permuatation ends here
for ( int ro = 0; ro < r ; ro++)
{
int[] arr = new int[c];
for (int co = 0; co < c; co++)
{
arr[co] = bluePixels[ro][co];
}
int max = arr.length - 1;
int min = 0;
int rnum;
int larr = arr.length - 1;
int[] parr = new int[arr.length];// to store the permuted array
int flag = 0;// 'flag' to flag the recurring number
int plen = parr.length - 1;
for(int z = 0 ; z < arr.length ; z++)
{
rnum = (rand.nextInt((max-min)+1) + min);// roll for the random number
parr[plen] = arr[rnum];
arr[rnum] = arr[larr];
larr--;// to reduce the size of the original array
plen--;// to make the parr to act like a stack
max--;
}
for(int z = 0; z<arr.length;z++ )
{
bluePixels[ro][z] = parr[z];
}
}
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bluePixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bluePixels permuatation ends here
// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& bluePixels permuatation ends here
int rgba;
for(int row=0; row<r; row++)
{
for(int col=0; col<r; col++)
{
rgba = (alphaPixels[row][col] & 0xff) << 24 | (redPixels[row][col] & 0xff) << 16 | (greenPixels[row][col] & 0xff) << 8 | (bluePixels[row][col] & 0xff);
img[i].setRGB(col, row, rgba);
}
}
try{
ImageIO.write(img[i], "png", new File("D:/Projects/Problem domains/Ashwini/encrypted/encr_"+i+".png"));
}
catch(Exception e)
{
e.printStackTrace();
}
}// for loop
}// method ends
}// class ends
异常(exception)在行
rgba = (alphaPixels[row][col] & 0xff) << 24 | (redPixels[row][col] & 0xff) << 16 | (greenPixels[row][col] & 0xff) << 8 | (bluePixels[row][col] & 0xff);
可能出了什么问题?
最佳答案
您似乎有一个拼写错误:
for(int row=0; row<r; row++) {
for(int col=0; col<r; col++)
^
应该是
for(int row=0; row<r; row++) {
for(int col=0; col<c; col++)
关于java - 从像素值重新创建整数时出现 ArrayIndexOutOfBounds 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193128/
实体类是: DeviceWithReading.java package com.fde.entity; import java.util.Set; import javax.persistence.
这个问题在这里已经有了答案: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (26 个
我有一个小问题,当我尝试从文件读取时,我会遇到 arrayindexoutofboundsException 。我不知道有更好或更详细的解释方法,所以我将粘贴下面的代码和错误。这一切都在我的程序的 m
我写了这个方法: public static Bitmap matrixToBitmap(int[][] slika) { int w = slika[0].length;
我的代码需要一些帮助,当我尝试运行它时,它给了我 arrayindexoutofbounds 0 异常,它指向“results[counter]=random;”行,以及我在它之前写的 system.
我需要以蛇的形式打印矩阵。因此对于这个矩阵,输出应该是: 我的问题是这段代码抛出 ArrayIndexOutofBounds。我该如何处理才能避免这种情况? int[][] mat= {{1,2,3}
我正在制作阿拉伯数字转换器并收到错误: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at ar
我不明白为什么会发生这种情况。如果没有 print 语句,代码可以正常工作,但是当我尝试打印元素时,我得到 ArrayIndexoutOfBounds。例如,如果我尝试提供 3 个元素,则会抛出异常。
我正在尝试将 Google 任务与我的应用程序同步。为此,我创建了一个类,在其中创建了需要获取任务列表和创建列表等的所有方法。 现在我想测试一下这些方法是否有效。为此,我创建了一个扩展 AsyncTa
这个问题已经有答案了: What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? (25 个回答)
所以我目前正在研究多维数组(2D),并且尝试反转二维数组中每个数组的顺序。 所以我有一个二维数组设置为:int firstArray[][] = {{5,6,7,8,9,10}, {11,12,13,
问题出在int [][]tam = new int [a][b]处。就只有那一条线。我是 Java 新手,有 C++ 背景。 //"Exercitiul" 3 Scanner input = new
这是我遇到索引越界异常的代码,我不明白为什么, int index = array.length - 1; E item = array[index]; while (item == null
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
public class Environment { //variables RoundingStage[][] land; int horizontalStreets;
我正在尝试创建一种使用动态编程计算(N 选择 R)的方法,但出现数组越界异常: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsEx
public Pasient[] finnPasient(String dato) { int j = 0; Pasient[] p = new Pasient[j]; for
所以我有一个数组 Canvas[256][256],它的随机索引 Canvas[r][r] (r 是随机的)设置为 1。然后我想循环遍历该数组以准确查看哪个索引是不是 0,然后随机选择一个点(上、下、
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
我写了一个 TokenizableString 类,它对用户输入的字符串进行标记化。这是它应该如何进行的示例 我输入 "My name is methos" 我应该在控制台中看到以下内容 'My' '
我是一名优秀的程序员,十分优秀!