導航:首頁 > 編程語言 > java獲取網頁圖片

java獲取網頁圖片

發布時間:2025-09-19 05:00:27

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

閱讀全文

與java獲取網頁圖片相關的資料

熱點內容
米64g網路怎麼開 瀏覽:502
2017互聯網java面試題 瀏覽:907
供求網站源碼 瀏覽:195
童程童美編程加盟怎麼樣 瀏覽:895
app美團如何下載 瀏覽:197
弄畫框用什麼app 瀏覽:814
java獲取網頁圖片 瀏覽:193
jsp集合對象轉json 瀏覽:231
文件櫃在cad裡面長啥樣 瀏覽:554
iphone手機文件保存在哪裡 瀏覽:817
解壓文件後要刷新 瀏覽:786
cc資料庫怎麼獲得時間 瀏覽:226
ug3d硬料開出怎麼編程 瀏覽:151
如何獲取文件Linux命令 瀏覽:981
大智慧軟體哪個版本最好 瀏覽:698
狼人殺自動主持app叫什麼 瀏覽:949
checkbox怎麼綁定資料庫 瀏覽:945
編程怎麼設置一分鍾開燈 瀏覽:754
如何把桌面文件發送到自己郵箱 瀏覽:498
校園網站怎麼看選修的課 瀏覽:59

友情鏈接