J'ai créé une image graphique avec le code d'exemple suivant. à ce stade, j'ai bufferedimage que je veux convertir en Uri de données IMG. Est-ce possible? Par exemple .. P> <IMG SRC="data:image/png;base64,[BufferedImage data here]"/>
3 Réponses :
Non testé, mais quelque chose comme ça devrait le faire: Il y a Lot de différentes implémentations de codec de base64 pour Java . J'ai eu de bons résultats avec MIGBASE64 . P> P>
"OutputStream Out" devrait être "byearrayOutPutStream", d'autres que cela fonctionne parfaitement! Merci!
Je reçois une erreur dans Eclipse si je le fais, mais l'autre fonctionne pour moi. Merci encore.
La sortie n'a pas de méthode TobyTeArray ()
@Jiyeon Mes excuses, voir le commentaire de Michael.
Depuis Java8, vous pouvez effectuer ce qui suit pour coder dans base64: base64.gecoder (). Encode (ImageBytes) Code>
Vous pouvez utiliser cette solution qui n'utilise aucune bibliothèque externe. Court et propre! Il utilise une bibliothèque Java 6 ( Datatypeconverter code>). Travaillé pour moi!
ByteArrayOutputStream output = new ByteArrayOutputStream();
ImageIO.write(image, "png", output);
DatatypeConverter.printBase64Binary(output.toByteArray());
J'utilise webdiver, obtenez CAPTCHA, comme ceci ci-dessous:
// formatName -> png // pathname -> C:/Users/n/Desktop/tmp/test.png public static String getScreenshot(WebDriver driver, String formatName, String pathname) { try { WebElement element = driver.findElement(By.xpath("//*[@id=\"imageCodeDisplayId\"]")); File screenshot = element.getScreenshotAs(OutputType.FILE); // base64 data String base64Str = ImageUtil.getScreenshot(screenshot.toString()); return base64Str; } catch (Exception e) { e.printStackTrace(); } return null; } public static String getScreenshot(String imgFile) { InputStream in; byte[] data = null; try { in = new FileInputStream(imgFile); data = new byte[in.available()]; in.read(data); in.close(); } catch (IOException e) { e.printStackTrace(); } String base64Str = new String(Base64.getEncoder().encode(data)); if (StringUtils.isAnyBlank(base64Str)) { return null; } if (!base64Str.startsWith("data:image/")) { base64Str = "data:image/jpeg;base64," + base64Str; } return base64Str; }