2016-07-29 12 views
-1

Ich arbeite an diesem Code, aber ich habe Mühe herauszufinden, wie man die Koordinaten eines Bildes, in diesem Fall ein Bild der Erde, im targetPicture1 (background) ändert .Ändern der Bildkoordinaten über einen Hintergrund Java

import java.awt.*; 
public class CopyCatDemo 
{ 
public static void main(String[] args) 
{ 
    Picture sourcePicture = new Picture("earth.jpg"); 
    System.out.println("Width: " + sourcePicture.getWidth()); 
    System.out.println("Height: " + sourcePicture.getHeight()); 
    Picture targetPicture1 = new Picture(400,400); 
    targetPicture1.setAllPixelsToAColor(Color.BLACK); 

    Pixel sourcePixel, targetPixel = null; 
    Color sourceColor, targetColor = null; 

    for(int y = 0; y < sourcePicture.getHeight(); y++) 
    { 
     for(int x = 0; x < sourcePicture.getWidth(); x++) 
     { 
      sourcePixel = sourcePicture.getPixel(x,y); 
      sourceColor = sourcePixel.getColor(); 
      targetPixel = targetPicture1.getPixel(x,y); 
      targetPixel.setColor(sourceColor);   
     } 
    } 

    sourcePicture.show(); 
    targetPicture1.show(); 
    targetPicture1.write("NewFile.jpg"); 
}//end of main method 
}//end of class 
+0

Um zu beginnen, importieren Sie ein Bild variabler Größe und versuchen, es in ein Bild der eingestellten Größe zu kopieren. Dies wird höchstwahrscheinlich zu Ausnahmen außerhalb der Grenzen führen. Was meinst du mit dem Versuch, die Bildkoordinaten zu ändern? – Dallen

+0

Ich möchte die Bilder über den Bildschirm bewegen. Anstatt oben links auf dem Bildschirm zu sein, möchte ich es nach unten links oder oben rechts verschieben, etc. –

+0

Ich versuche nicht, die Größe der Bilder zu manipulieren, sondern die Position, auf der sie sich im schwarzen Hintergrund befindet. Tut mir leid, dass ich nicht klar bin. –

Antwort

1

Ich würde Ihnen empfehlen, einen Offset zu verwenden. Auf diese Weise können Sie bestimmen, wo das Bild platziert wird, wenn Sie es kopieren.

versuchen so etwas wie:

import java.awt.*; 
public class CopyCatDemo 
{ 
public static void main(String[] args) 
{ 
    Picture sourcePicture = new Picture("earth.jpg"); 
    System.out.println("Width: " + sourcePicture.getWidth()); 
    System.out.println("Height: " + sourcePicture.getHeight()); 
    Picture targetPicture1 = new Picture(400,400); 
    targetPicture1.setAllPixelsToAColor(Color.BLACK); 

    int offsetX = 0; 
    int offsetY = 0; 

    Pixel sourcePixel, targetPixel = null; 
    Color sourceColor, targetColor = null; 

    for(int y = 0; y < sourcePicture.getHeight(); y++) 
    { 
     for(int x = 0; x < sourcePicture.getWidth(); x++) 
     { 
      sourcePixel = sourcePicture.getPixel(x,y); 
      sourceColor = sourcePixel.getColor(); 
      targetPixel = targetPicture1.getPixel(offsetX + x, offsetY + y); 
      targetPixel.setColor(sourceColor);   
     } 
    } 

    sourcePicture.show(); 
    targetPicture1.show(); 
    targetPicture1.write("NewFile.jpg"); 
}//end of main method 
}//end of class 

können dann sagen Sie das Bild wollte in der unteren rechten Ecke des Bildschirms befindet. Einfach stellen Sie entsprechend Offset:

int offsetX = 400 - sourcePicture.getWidth(); 
int offsetY = 400 - sourcePicture.getHeight(); 

Dann wird das Bild seiner Breite eine Höhe weg von dem Bildschirm von der unteren rechten Ecke gezogen beginnen wird.

+0

Als ich es versuchte, funktionierte es nicht für mich. Es bleibt immer noch oben links auf dem Bildschirm hängen. –

+0

Warte, es hat jetzt funktioniert. Ich habe Ihren Code einfach kopiert und eingefügt. –

+0

@BenRocco Ich war für ein bisschen königlich verwirrt. – Dallen

1

@ Ben Rocco zweite Frage zu beantworten:

ich eine andere Frage, die groß sein würde, wenn Sie beantwortet, wie würde ich das Bild in zwei Hälften geschnitten, wie die für die Erde nördlichen Hemisphäre zeigen nur haben?

Sie müssen den Startpunkt für Ihre Java-Schleife ändern.

int offsetX = 400 - sourcePicture.getWidth(); 
int offsetY = 400 - sourcePicture.getHeight()/2; 

tada

: Lässt nur die untere Hälfte des Fotos drucken:

import java.awt.*; 
public class CopyCatDemo 
{ 
public static void main(String[] args) 
{ 
    Picture sourcePicture = new Picture("earth.jpg"); 
    System.out.println("Width: " + sourcePicture.getWidth()); 
    System.out.println("Height: " + sourcePicture.getHeight()); 
    Picture targetPicture1 = new Picture(400,400); 
    targetPicture1.setAllPixelsToAColor(Color.BLACK); 

    int offsetX = 0; 
    int offsetY = 0; 

    Pixel sourcePixel, targetPixel = null; 
    Color sourceColor, targetColor = null; 

    for(int y = sourcePicture.getHeight()/2; y < sourcePicture.getHeight(); y++) 
    { 
     for(int x = 0; x < sourcePicture.getWidth(); x++) 
     { 
      sourcePixel = sourcePicture.getPixel(x,y); 
      sourceColor = sourcePixel.getColor(); 
      targetPixel = targetPicture1.getPixel(offsetX + x, offsetY + y); 
      targetPixel.setColor(sourceColor);   
     } 
    } 

    sourcePicture.show(); 
    targetPicture1.show(); 
    targetPicture1.write("NewFile.jpg"); 
}//end of main method 
}//end of class 

dann müssen wir die für Y-Offset ändern!

+0

Das macht so viel Sinn, ich fühle mich dumm. –

+0

Es ist in Ordnung, wir alle haben unsere Momente. – Dallen

Verwandte Themen