Ich habe einen Code, der ein Bild in eine Pixelmatrix bringt. Ich muss dieses Bild in vier Teile teilen und 4 verschiedene Bilddateien für diese Teile bekommen. Dann muss ich einige Bildbearbeitung machen und dann diese Teile wieder in einem einzigen Bild zusammenfügen. Bitte helfen Sie mir dabei. Hinweis: das Bild ist farbig und wir wollen es in 4 gleiche Teile teilen und dann als eins zurückholen. Keine Änderungen erforderlich. Hier ist der Code, um vier Matrizen von Intensitäten zu bekommen. Aber ich weiß nicht, was zu tun ist damit. Es könnte sein, dass es gar nicht nötig ist.Pixeldaten zurück in Bild in Java konvertieren
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
class Optimization
{
public static void main(String[] args) throws IOException
{
BufferedImage hugeImage = ImageIO.read(new File("comp.jpg"));
final byte[] pixels = ((DataBufferByte) hugeImage.getRaster().getDataBuffer()).getData();
int width = hugeImage.getWidth();
int height = hugeImage.getHeight();
if(width%2!=0)
width=width-1;
if(height%2!=0)
height=height-1;
//System.out.print(width+" "+height);
int intensity[][]=new int[width][height];
int b1[][]=new int[width/2][height/2];
int b2[][]=new int[width/2][height/2];
int b3[][]=new int[width/2][height/2];
int b4[][]=new int[width/2][height/2];
int x1=0,y1=0,x2=0,y2=0,x3=0,x4=0,y3=0,y4=0;
final int pixelLength = 3;
for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength)
{
int a1,a2,a3;
a3= ((int) pixels[pixel] & 0xff); // blue
a2= (((int) pixels[pixel + 1] & 0xff)); // green
a1= (((int) pixels[pixel + 2] & 0xff)); // red
int i=(a1+a2+a3)/3;
intensity[col][row]=i;
if((col<=width/2-1)&&(row<=height/2-1))
{
b1[x1][y1]=i;
x1++;
if(col==width/2-1)
{
x1=0;
y1++;
}
}
if((col<width)&&(row<=height/2-1)&&(col>width/2-1))
{
b2[x2][y2]=i;
x2++;
if(col==width-1)
{
x2=0;
y2++;
}
}
if((col<width/2)&&(row<height)&&(row>=height/2))
{
b3[x3][y3]=i;
x3++;
if(col==width/2-1)
{
x3=0;
y3++;
}
}
if((col>width/2-1)&&(row>height/2-1))
{
b4[x4][y4]=i;
x4++;
if(col==width-1)
{
x4=0;
y4++;
}
}
col++;
if (col == width)
{
col = 0;
row++;
}
}
for(int m=0;m<height/2;m++)
{
for(int n=0;n<width/2;n++)
{
System.out.print(b1[n][m]+" ");
}
System.out.println();
}
}
}
Entschuldigung, es ist nicht klar, was Sie versuchen zu tun. Bitte zeigen Sie einige Beispiele. –
Ich möchte nur ein Bild in vier Teile teilen. Das ist es. – Srijan
Funktioniert Ihr Code? Scheitert es? Hast du es in deinem Debugger durchgegangen, um zu sehen, wo es von dem abweicht, was du erwartest? Wenn es fehlschlägt, was ist das falsche Verhalten? Gibt es eine Ausnahme? Wenn ja, zeigen Sie uns den Stack-Trace und teilen Sie uns mit, wo in Ihrem Code die Exception entsteht. Sie müssen uns helfen, Ihnen zu helfen. –