2017-01-25 127 views
1

我一直在尝试上传从代号一个签名捕获的签名到我的php server.the问题是,上传的图片是一个黑色的image.Below是我的code.how我可以修复这个codename one signatueComponent image upload

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); 

和PHP代码

[![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

黑色IMG是文件whic h上传到服务器。另一个显示正在运行的app.i的屏幕截图,如上图所示截图

+0

黑色img是上传到服务器的文件。另一个显示正在运行的app.i的屏幕截图,如截图 –

+0

所示上传签名在此过程之后'orderHome'是否包含有效图像当你添加标签时完成?我注意到你在添加后没有重新验证,所以它可能不显示。在调试器中,数组看起来像是具有正确的图像内容吗?如果将其保存到文件中是否包含有效数据? –

+0

图像显示当我将它添加到orderHome窗体中的标签时。使用网络管理器查看时,数组显示它包含一些图像内容(虽然我不确定它是否合适的图像内容)。问题是当图像保存到file.it显示我上面添加的黑色图像 –

回答

0

该签名生成一个半透明的图像。 JavaSE在将半透明图像保存为JPEG时存在一些问题,因此PNG运行良好。另一种方法是创建一个不透明的图像和保存为JPEG例如为:

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

myImage将是不透明的白色背景。

+0

awesome.thank你 –