Utilizzo un plug-in jQuery chiamato wPaint per consentire agli utenti di disegnare la propria immagine. Mando l'immagine risultante come stringa al server come una stringa che inizia conCome convertire un'immagine come stringa in un file PNG
dati: image/png; Base64,
ho provato i due approcci di seguito, ma con entrambi gli approcci i' m non è in grado di memorizzare l'immagine.
Approccio 1
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
FileOutputStream fileOutputStream = new FileOutputStream("/home/arvind/Desktop/test.png");
fileOutputStream.write(imgByteArray);
fileOutputStream.close();
In questo caso il file viene scritto, ma non mostra l'immagine. Tuttavia, quando rimuovo l'estensione del file ottengo la stringa che è stata inviata al server (ad esempio, qualunque sia in imageData).
Approccio 2
String imageData = parameterParser.getStringParameter("image", "");
byte[] imgByteArray = Base64.decodeBase64(imageData.getBytes());
InputStream in = new ByteArrayInputStream(imgByteArray);
BufferedImage bImageFromConvert = ImageIO.read(in);
ImageIO.write(bImageFromConvert, "png", new File("/home/arvind/Desktop/test.png"));
Il BufferedImage bImageFromConvert è nullo in modo da ottenere un'eccezione (IllegalArgumentException) quando viene creato il file.
La classe Base64 proviene dalla libreria di codec di apache commons ed è la versione 1.2.
C'è qualcosa che sto facendo male?
come l'immagine viene convertita come una stringa? –
nel plugin wPaint (che in realtà è un plugin jQuery), c'è una funzione per convertire l'immagine in una stringa. la stringa viene convertita correttamente perché se si assegna un img src con la stessa stringa sul lato client, viene mostrata l'immagine. –
quindi è necessario riconvertirlo in byte con lo stesso plugin. –