1. java爬虫读取某一张指定图片的url,求解答
使用jsoup解析到这个url就行,dom结构如下:
2. java 怎么实现网页截图
事实上,如果您想以Java实现网页截图,也就是“输入一段网址,几秒钟过后就能截取一张网页缩略图”的效果。那么,您至少有3种方式可以选择。
1、最直接的方式——使用Robot
方法详解:该方法利用Robat提供的强大桌面操作能力,硬性调用浏览器打开指定网页,并将网页信息保存到本地。
优势:简单易用,不需要任何第三方插件。
缺点:不能同时处理大量数据,技术含量过低,属于应急型技巧。
实现方法:使用如下代码即可。
[java]viewplain
publicstaticvoidmain(String[]args)throwsMalformedURLException,
IOException,URISyntaxException,AWTException{
//此方法仅适用于JdK1.6及以上版本
Desktop.getDesktop().browse(
newURL("http://google.com/intl/en/").toURI());
Robotrobot=newRobot();
robot.delay(10000);
Dimensiond=newDimension(Toolkit.getDefaultToolkit().getScreenSize());
intwidth=(int)d.getWidth();
intheight=(int)d.getHeight();
//最大化浏览器
robot.keyRelease(KeyEvent.VK_F11);
robot.delay(2000);
Imageimage=robot.createScreenCapture(newRectangle(0,0,width,
height));
BufferedImagebi=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphicsg=bi.createGraphics();
g.drawImage(image,0,0,width,height,null);
//保存图片
ImageIO.write(bi,"jpg",newFile("google.jpg"));
}
2、最常规的方式——利用JNI,调用第三方C/C++组件
方法详解:目前来讲,Java领域对于网页截图组件的开发明显不足(商机?),当您需要完成此种操作时,算得上碰到了Java的软肋。但是,众所周知Java也拥有强大的JNI能力,可以轻易将C/C++开发的同类组件引为己用。不懂可以扣五七八零二四一四四
优势:实现简单,只需要封装对应的DLL文件,就可以让Java实现同类功能。
劣势:同其他JNI实现一样,在跨平台时存在隐患,而且您的程序将不再属于纯Java应用。
实现方法:可参见此用例,具体封装何种C/C++组件请自行选择。
PS:示例来源于ACA HTML to Image Converter项目(http://www.acasystems.com/en/web-thumb-activex/faq-convert-html-to-image-in-java.htm ),这是一个收费的HTML转Image第三方组件,但封装方式在Java中大同小异。
引用JNI封装:
[java]viewplain
importsun.awt.*;
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.*;
importjava.awt.peer.*;
publicclassSnap
{
static
{
System.loadLibrary("Snap");
}
publicstaticvoidmain(String[]argv)
{
Snapt_xSnap=newSnap();
t_xSnap.Start("http://www.google.com","snapshot-google.png");
}
publicnativevoidStart(Stringpi_strURL,Stringpi_strImageName);
}
CPP部分的实现:
[java]viewplain
#include<windows.h>
#include<atlbase.h>
#include"snap.h"
#pragmacomment(lib,"atl.lib")
#import"./../../acawebthumb.dll"no_namespace
JNIEXPORTvoidJNICALLJava_Snap_Start(JNIEnv*pEnv,jobject,jstringpi_strUrl,jstringpi_strFileName)
{
CoInitialize(0);
_bstr_tt_strUrl=pEnv->GetStringUTFChars(pi_strUrl,0);
_bstr_tt_strFileName=pEnv->GetStringUTFChars(pi_strFileName,0);
IThumbMakerPtrHTML_Converter=NULL;
HRESULThr=HTML_Converter.CreateInstance(L"ACAWebThumb.ThumbMaker");
if(SUCCEEDED(hr))
{
HTML_Converter->SetURL(t_strUrl);
if(0==HTML_Converter->StartSnap())
HTML_Converter->SaveImage(t_strFileName);
}
if(HTML_Converter)
HTML_Converter.Release();
CoUninitialize();
}
以该组件图像化yahoo界面的效果图:
3、最扎实的方法——自行解析HTML标记,并将其图像化
方法详解:众所周知,HTML之所以在浏览器中以具体的网页格式出现,并非服务器端传了一整个应用到客户端,而是源自于浏览器对于客户端自行解析的结果。因此,只要我们将对应的解析一一实现,那么将网页图形化,就将不是什么难事。
优势:纯Java实现,一劳永逸,一旦开发完成则永远通用,而且有一定的商用价值。
劣势:开发费时,且需要针对不同语法做精确分析,才能保证输出的基本正确。尤其在涉及到JavaScript解析时,难度将尤其增大。
实现方法:目前尚无具体案例可供参考。但是,由于Java有jdic之类的浏览器项目存在(https://jdic.dev.java.net/),而Java图形界面又属绘制生成。从理论上说,我们可以将所有具备Graphics的组件图形化保存。
而如果自行解析,那么您需要建立HTML解析器(或使用第三方的,万幸Java在这方面的组件很多),了解Java2D机制,了解何时该使用drawString绘制文字,何时又该使用drawImage插入图片等等。
谢谢采纳!
3. 怎样在java里用URL引入图片
读取图片可以有以下两种方法:x0dx0a①:ImageIO.read(new File("这里可以写目录,比如您提到的src/images/某张图片名"));x0dx0a②:new ImageIcon("目录").getImage();x0dx0a这两个方法都返回一个图片对象。可以用一个Image对象接收一下。x0dx0ax0dx0a相对路径是指您所运行的程序的包 所在的文件夹开始的路径。x0dx0a一般来说,上面两种读取方法读取时,是从项目的目录下开始找文件的。x0dx0a所以,您把图片放在src下的images包中,正确的读取方法应该是:x0dx0aImage img=ImageIO.read(new File("src/images/图片名"));或者x0dx0aImage img=new ImageIcon("src/images/图片名").getImage();x0dx0a得到这样一个Image对象后,就可以使用了。
4. java中如何得到屏幕图像信息并保存起来 最后画出来 是不是用BufferedImage来保存啊 求一个大概过程
你的这个问题大概分为以下几个步骤:
1.先得到屏幕图像:
这里如果只是得到图像,图像抓取出来一般是矩形的图片(有专门的方法Robot.createScreenCapture()),图片的大小用边界检测来限制(java.Rectangle类中参考下),抓取到的图片它有左上角那个点的坐标(x,y)还有宽度width,还有高度height,这些就是图像的基本信息了(其他信息如颜色之类的是同样的道理),最好写一个Image的Bean,你存储的时候就可以直接存对象,而不是每个图像的基本信息了。
2.从内存中把图片读出来并保存到磁盘:
抓取下来的图片被BufferedImage接收,但是这个图片并没有被保存起来,只是在内存中的缓存区而已。不管是什么数据,包括数据库里面的表,都是以文件的形式被保存在磁盘上的,所以这里就要把BufferedImage写入一个文件(推荐使用字符流)。这个过程用到的是IO上面的知识。
3.重新画出图片:
第二步中已经把图片以对象的形式保存在文件中了,那么你要画出来就需要重新从文件中读取出这个图片的信息(IO上的知识)(x,y,width,height....),Frame会自动调用paint方法,但是你需要在Image的Bean里面定义它自身的draw方法,然后在paint方法中调用draw方法,这样就可以在你的程序窗口中画出这张图片。
5. 怎么用java从文件中读取图片和写入图片到文件里
在Java中,要从文件读取图片并写入到另一个文件,可以使用Java的awt和javax.imageio包。下面是一个简单的例子,展示如何读取一个名为"supermaket1.jpg"的图片文件,并将其写入到另一个文件中。
首先,你需要导入必要的包。具体来说,需要导入Java.awt.Image、Java.awt.image.BufferedImage、Java.awt.image.RenderedImage和javax.imageio.ImageIO,以及Java.io.*。这可以通过在类的顶部添加如下导入语句实现:
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
import javax.imageio.ImageIO;
import java.io.*;
然后,定义一个名为image的类,并在main方法中实现具体逻辑。首先创建一个Image数组,大小为10。接着,使用ImageIO.read方法从指定路径读取图片,并将其赋值给Image类型的变量image。这里以"supermaket1.jpg"为例。
Image[] array = new Image[10];
Image image = ImageIO.read(new File("c:\\supermaket1.jpg"));//这里是你要读取的图像文件
接着,使用ImageIO.write方法将读取到的图片写入到另一个文件中。这里假设目标文件名为"test.txt",并且需要将其保存为png格式。如果目标文件不存在,系统会自动创建它。
array[0] = image;
ImageIO.write((RenderedImage) image, "png", new File("f:\\test.txt"));//这里是你要写入的文件,如果不存在这个文件,那么系统会自动创建它
这个例子展示了如何使用Java的基本图像处理功能。通过简单的几行代码,就可以实现图片的读取与写入操作。