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的基本圖像處理功能。通過簡單的幾行代碼,就可以實現圖片的讀取與寫入操作。