2017-01-25 8 views
1

Ich habe versucht, die Unterschrift aus dem Codenamen eine Unterschrift auf meinem php-Server hochgeladen. Das Problem ist, dass das Bild hochgeladen ein schwarzes Bild ist. Unten ist mein code.how kann ich dies behebencodename one signatueComponent Bild hochladen

SignatureComponent sig = new SignatureComponent(); 
sig.addActionListener((evt)-> { 
try{ 
img = sig.getSignatureImage(); 
}catch(Exception ex){ 
ex.printStackTrace(); 
     } 
// Now we can do whatever we want with the image of this signature. 
}); 
Button sv = new Button("save"); 
sv.addActionListener(new ActionListener(){ 
     @Override 
     public void actionPerformed(ActionEvent evt) { 
      try { 


       Label it = new Label(); 
       it.setIcon(img); 
       orderHome.add(it); 

       ImageIO imgIO= ImageIO.getImageIO(); 
       ByteArrayOutputStream out = new ByteArrayOutputStream(); 
       imgIO.save(img, out,ImageIO.FORMAT_JPEG, 1); 
       byte[] ba = out.toByteArray(); 
       MultipartRequest request = new MultipartRequest(); 
       String url = Global.url1 + "upload_photo.php"; 

       request.setUrl(url); 


        request.addData("file",ba,"image/jpeg"); 
        request.addArgument("order_id", order_id); 
       request.addArgument("customer_id", customer_id); 

       NetworkManager.getInstance().addToQueue(request); 

und der pHP-Code

[![image uploaded][1]][1] 
<?php 
@SESSION_START(); 
require_once("../includes/functions.php"); 
$target_path="../uploads/"; 
$customer_id=$_REQUEST['customer_id']; 
$order_id=$_REQUEST['order_id']; 
$uid = uniqid(); 
$file =$uid.".jpg"; 
$sucess=move_uploaded_file($_FILES["file"]["tmp_name"], $target_path.$file);     

image uploaded to server screenshot of the simulator

die schwarze img ist die Datei whic h wird auf den Server hochgeladen. der andere zeigt den Screenshot der laufenden App.i möchte die Signatur hochladen, wie in der Abbildung gezeigt

+0

die schwarze img ist die Datei, die auf den Server hochgeladen wird. Die andere zeigt den Screenshot der laufenden app.i möchte die Signatur hochladen, wie im Screenshot gezeigt –

+0

Enthält 'orderHome' ein gültiges Bild nach diesem Prozess Wird abgeschlossen, wenn Sie ein Label hinzufügen? Ich habe festgestellt, dass Sie nach dem Hinzufügen nicht erneut validiert haben, sodass es möglicherweise nicht angezeigt wird. Sieht das Array im Debugger so aus, als hätte es den richtigen Bildinhalt? Wenn Sie es in einer Datei speichern, enthält es gültige Daten? –

+0

Das Bild zeigt, wenn ich es auf die Bezeichnung in der Reihenfolge hinzufügenHome Form.das Array bei der Verwendung der Netzwerk-Manager zeigt, dass es einige Bildinhalte enthält (obwohl ich nicht sicher bin, ob es der richtige Bildinhalt) .Das Problem ist, wenn das Bild is save to file.it zeigt das schwarze Bild, das ich oben hinzugefügt habe –

Antwort

0

Die Signatur erzeugt ein transluzentes Bild. JavaSE hat einige Probleme beim Speichern transluzenter Bilder als JPEGs und somit funktioniert PNG gut. Eine weitere Alternative wäre ein undurchsichtiges Bild zu erstellen und speichern, dass als JPEG z.B .:

Image myImage = Image.create(img.getWidth(), img.getHeight()); 
myImage.getGraphics().drawImage(img, 0, 0); 

Die neuen myImage wird mit dem weißen Farbe Hintergrund undurchsichtig sein.

+0

awesome.thank Sie –