我一直在尝试将从代号 one 签名捕获的签名上传到我的 php 服务器。问题是上传的图像是黑色图像。下面是我的代码。我该如何解决这个问题
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);
黑色img是上传到服务器的文件。另一个显示正在运行的应用程序的屏幕截图。我想上传屏幕截图中的签名
最佳答案
签名生成半透明图像。 JavaSE 在将半透明图像保存为 JPEG 时存在一些问题,因此 PNG 效果很好。另一种选择是创建不透明图像并将其另存为 JPEG,例如:
Image myImage = Image.create(img.getWidth(), img.getHeight());
myImage.getGraphics().drawImage(img, 0, 0);
新的 myImage
将是不透明的,并带有白色背景。
关于java - 代号一签名组件图片上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852966/