// Get the image source data
String imageData = webElement.getAttribute("src");
// Extract the image data and file extension from the data URL
String[] parts = imageData.split(",");
String mimeType = parts[0].split(":")[1];
String base64Data = parts[1];
String fileExtension = "";
if (mimeType.equals("image/jpeg")) {
fileExtension = ".jpg";
} else if (mimeType.equals("image/png")) {
fileExtension = ".png";
} else if (mimeType.equals("image/gif")) {
fileExtension = ".gif";
} else {
// Unsupported image format
throw new IOException("Unsupported image format");
}
// Set the output file path and stream. Here, we save the image file.
String outputPath = "C:/images/image" + fileExtension;
FileOutputStream outputStream = new FileOutputStream(outputPath);
// Close the output stream
outputStream.close();
5条答案
按热度按时间ev7lccsx1#
问题
Java抛出
MalformedURLException
,因为它找不到该协议的URLStreamHandler
。请检查构造函数的javadocs以了解详细信息。总结
由于
URL
类有一个openConnection
方法,URL类会检查以确保Java知道如何打开正确协议的连接,如果没有URLStreamHandler
协议,Java将拒绝创建URL
,保存您在尝试调用openConnection
时失败。溶液
如果您不打算在Java中打开这些协议的连接,那么您可能应该使用
URI
类。qvtsj1bj2#
听起来你的应用程序中没有为“telnet”协议注册的处理程序。因为URL类可以用来打开一个InputStream到URL,所以如果你被允许使用它创建一个对象,它需要为协议注册一个处理程序来完成这项工作。
有关如何添加处理程序的详细信息,请参阅:http://docs.oracle.com/javase/7/docs/api/java/net/URLStreamHandlerFactory.html
4uqofj5v3#
你会得到那个错误,因为java没有一个标准的protocol handler用于telnet。
5lhxktic4#
简单的答案是,它只识别某些协议,而剩余的无限协议是无法识别的。
8ulbf1ek5#
如果图像URL以“data”开头,则意味着图像数据嵌入在HTML页面本身,而不是存储在可以通过URL访问的远程服务器上,因此无法使用标准HTTP连接下载图像,所以base64机制帮助了我们。
图片来源URL:数据:图像/png;base64,iV输入0 KGgoAAAAN输出0 KGgoAAAAN输入0 KGAUN输入0 KGgoAAAAN输出0 KGAUN输入0 KGgoAAAAN输出0 KGAUN输入0 KGgoAAAAN输入0 KGAUN输入0 KGgoAAAAN输出0 KGAUN输入0 KGAUN输入0 KGgoAAAAN输出0 KGAUN输入0 KGAUN输入0 KGgoCC输出0 KGAUN输出
要下载映像,可以使用以下代码:
此代码首先从“data”URL中提取图像数据,并将其拆分为MIME类型和base64编码的数据组件。然后,在解码base64编码的图像数据后,根据MIME类型确定文件扩展名,并将图像保存到磁盘上的文件中。请注意,您需要处理解码和文件I/O过程中可能发生的任何异常。
要使用这段代码,除了我在前面的回答中提到的类之外,您还需要导入以下类:
Base64类用于解码base64编码的图像数据,java.io.File类用于表示磁盘上的输出文件。
我希望这能帮助到一些人!