Я пытаюсь загрузить подпись, захваченную под кодовым именем одна подпись, на мой 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
будет непрозрачным с белым цветом фона.
Других решений пока нет …