我已经知道图像的位置了,但为了简单起见,我想用JSoup本身下载图像.(这是为了简化获取cookie,推荐人等)
这是我到目前为止:
//Open a URL Stream
Response resultImageResponse = Jsoup.connect(imageLocation).cookies(cookies).ignoreContentType(true).execute();
// output here
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(new java.io.File(outputFolder + name));
//BufferedWriter out = new BufferedWriter(new FileWriter(outputFolder + name));
out.write(resultImageResponse.body()); // resultImageResponse.body() is where the image's contents are.
out.close();
Run Code Online (Sandbox Code Playgroud) 听起来很简单吧?使用
ImageIO.read(new ByteArrayInputStream(bytes));
Run Code Online (Sandbox Code Playgroud)
这是皱纹.由于某种原因,它将jpeg检测为bmp,这是我调用时返回的第一个ImageReader
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes));
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis);
Run Code Online (Sandbox Code Playgroud)
这会导致图像损坏.有没有办法告诉java没有直接查看标头的字节,并且没有任何人知道不同图像的字节标头的良好参考?
只是让你们知道我还在努力.如果/我有答案,我会通知你.到目前为止,我感谢你们所有人的回复.
我想将图像转换为字节数组,然后将该字节数组转换为字符串.此外,我想将该字符串转换回字节数组,最后返回到图像.我怎么能完成这个?任何帮助将不胜感激.
我正在尝试将图像(png,jpg,tiff,gif)转换为磁盘上的文件。当我将其存储在文件中后查看它时,我看不到该文件。
这是我根据其他论坛讨论尝试过的一些代码:
byte[] inFileName = org.apache.commons.io.FileUtils.readFileToByteArray(new File("c:/test1.png"));
InputStream inputStream = new ByteArrayInputStream(inFilename);
..String fileName="test.png";
Writer writer = new FileWriter(fileName);
IOUtils.copy(inputStream, writer,"ISO-8859-1");
Run Code Online (Sandbox Code Playgroud)
这会创建一个我看不到的 png 文件。
我尝试根据其他一些讨论使用 ImageIO,但无法使其工作。感谢任何帮助。
Image inImage = ImageIO.read(new ByteArrayInputStream(inFilename));
BufferedImage outImage = new BufferedImage(100, 100,
BufferedImage.TYPE_INT_RGB);
OutputStream os = new FileOutputStream(fileName);
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
//encoder.encode(inImage);
Run Code Online (Sandbox Code Playgroud)