Array an PHP übergeben



  • Hi zusammen,
    mit PHP kann man ja bekanntlich auch Bilder "basteln", siehe Counter... die funzen ja alle so... oder auch mit Perl..
    Ich möchte gerne:

    1. einem PHP-Skript aus Java heraus ein Array übergeben.
    2. ein PHP-"Bild" (Jpg) in Java öffnen.

    D.h.:
    Ich will aus Java heraus ein Bild mit PHP generieren lassen und im Java-Applet dann anzeigen können...
    Vielleicht kann man ja auch in Java direkt Bilder manipulieren?
    Also damit meine ich: In ein Bild (Image) Striche reinmalen, etc...???
    Vielen Dank!!!!
    Gruss, Tobias


  • Mod

    Ich empfehle dir, keinen Umweg über PHP zu gehen. Man kann mit Java alles mit Bildern machen, was man möchte.

    🙂 ...Beispiel, wie man mit Java zeichnen kann :

    Picture.java :

    [java]
    import java.awt.;
    import java.awt.image.BufferedImage;
    import javax.swing.
    ;

    public class Picture extends JFrame
    {
    public Picture (Image image)
    {
    setTitle ("Tolles Bild :)");
    ImageComponent imageComponent = new ImageComponent (image);
    getContentPane().add(imageComponent);
    pack();
    setResizable(false);
    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args)
    {
    BufferedImage image = new BufferedImage (600,450,
    BufferedImage.TYPE_INT_RGB);
    Graphics2D graphics = image.createGraphics();
    graphics.setColor(new Color (128,128,255));
    graphics.fillRect(0,0,600,225);
    graphics.setColor(new Color (0,192,0));
    graphics.fillRect(0,225,600,225);
    graphics.setColor(Color.YELLOW);
    graphics.fillArc(50,20,80,80,0,360);
    graphics.setColor(Color.LIGHT_GRAY);
    graphics.fillRect(350,150,200,150);
    graphics.setColor(new Color (192,64,0));
    graphics.fillRect(375,200,50,100);
    graphics.setColor(Color.BLUE);
    graphics.fillRect(450,175,75,75);
    graphics.setColor(Color.DARK_GRAY);
    graphics.fillPolygon(new int [] {350,450,550},
    new int [] {150,75,150},3);
    graphics.setColor (Color.WHITE);
    graphics.fillArc (150,200,50,50,0,360);
    graphics.setColor (Color.BLACK);
    graphics.setStroke (new BasicStroke (3));
    graphics.drawArc (150,200,50,50,0,360);
    graphics.drawArc (158,208,34,34,0,-180);
    graphics.drawLine(175,220,175,230);
    graphics.drawLine(163,215,167,215);
    graphics.drawLine(183,215,187,215);
    graphics.drawLine(175,250,175,325);
    graphics.drawLine(125,275,225,275);
    graphics.drawLine(175,325,150,375);
    graphics.drawLine(175,325,200,375);
    Picture picture = new Picture (image);
    picture.setVisible(true);
    }
    }[/code]

    ImageComponent.java :

    [java]
    import java.awt.*;
    import javax.swing.JComponent;

    public class ImageComponent extends JComponent
    {
    private Image image;

    public ImageComponent (Image image)
    {
    this.image = image;
    setPreferredSize (new Dimension (image.getWidth(null),
    image.getHeight(null)));
    }

    public void paintComponent (Graphics g)
    {
    g.drawImage(image,0,0,null);
    }
    }[/code]
    😃 😃 😃 ...ich habe mir sehr viel Mühe beim Zeichnen gegeben, ich hoffe, du weißt das zu schätzen! 😃



  • Eigentlich gäbe es hier nichts mehr auf die
    Antwort hinzuzufügen, weil Gregor schon richtigerweise
    gesagt hatt, das Java Bildbearbeitung leistungsfähiger
    als das PHP Pendant ist.

    Nur will ich ein Tip geben wie du einfachster weise
    dennoch ein Java - Array übergeben kannst.

    Die Lösung XML

    nehmen wir als Beispiel ein Array mit primitiven Typen.
    Nimm JDOM /www.jdom.org

    import org.jdom.*;
    
      int[] a = new int[5];
    
      Element array = new Element("meinArray");
      Document doc = new Document(array);
    
      for(int i =0;i < a.length;i++) {
         Element value = new Element("value");
         value.setText(new Integer(a[i]).toString());
         array.add(value);
      }
      doc.add(array);
    

    Dieses Erstellte XML Document brauchst du nur an das PHP-Script
    posten und per:
    "PHP-Kenntnisse ausgrab"

    // füllt das Array $meinArray  
    
      // Definiert Handler und Parser
      $xml_parser = xml_parser_create();
      // Ruft die Funktion startNode bzw endNode beim 
      // antreffen von Start Tag und End tag auf
      xml_set_element_handler($xml_parser,"startNode","endNode");
      xml_set_character_data_handler($xml_parser,"getData");
      xml_parse($xml_parser,$quell);
    
      function startNode($parser,$name,$attrs){
        global $actuellNode;
        $actuellNode = $name;
      }
      function endNode($parser,$name) {
        global $actuellNode;
        $actuellNode = "";
      }
      function getData($parser,$data){
       global $actuellNode,$meinArray;
       if($actuellNode=="value")
               $meinArray[] = $data;
      }
    

    Das währe eine schnelle Möglichkeit ein Array zu nutzen.
    Solange du primitive Typen übergibts stellt das kein Problem da.
    Wenn du Objectdaten übergibst wird dies um ein vielfaches komplizierter,
    und kann nur soweit funktionieren wie sich dieses Object mit den
    eingeschränkten OOP Möglichkeiten von PHP realisieren lässt.

    Aber nochmals:
    Bilder mit Java zu bearbeiten ist die bessere lösung, dies nur weil mir grad
    langweilig war :p

    [ Dieser Beitrag wurde am 03.02.2003 um 11:41 Uhr von HolyFly editiert. ]



  • hi,
    vielen Dank!
    Hat mir echt geholfen!
    Gruss, Tobias Schenk


Anmelden zum Antworten