思路:使用 java.awt.Image包下的Image可以接收圖片。讀取則使用ImageIO對象。
創(chuàng)新互聯(lián)建站是一家專業(yè)提供靈臺企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站建設、網(wǎng)站建設、成都h5網(wǎng)站建設、小程序制作等業(yè)務。10年已為靈臺眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡公司優(yōu)惠進行中。
代碼如下:
/**
* 讀取圖片,首先導入以下的包
*/
import java.awt.Image;
import javax.imageio.ImageIO;
import java.io.*;
/**
* 用Image對象來接收圖片
* 路徑根據(jù)實際情況修改
*/
Image image = ImageIO.read(new File("c:\\1.png"));
System.out.println(image.getSource());
%@ page language="java" pageEncoding="UTF-8"%
%@page import="java.awt.image.BufferedImage"%
%@page import="javax.imageio.ImageIO"%
%@page import="java.io.File"%
%
out.clear();
response.setContentType("image/png");
BufferedImage image = ImageIO.read(new File("D:\\mark.png"));
ImageIO.write(image, "png", response.getOutputStream());
%
我這樣寫沒有問題,你試試。我來解釋一下樓上的疑問,html標簽不可能引用到本地的文件,比如C:\\xx.jpg你指定的路徑得是web目錄下的,動態(tài)生成圖片一般用servlet實現(xiàn),比如驗證碼之類的。
不是很明白,
類似于啟動界面的么?
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class JSplashWindow extends JWindow implements Runnable
{
Thread splashThread=null;
public JSplashWindow()
{
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));//設置啟動界面的光標樣式
JPanel splash=new JPanel(new BorderLayout());
URL url=getClass().getResource("1.jpg");//獲得指定資源文件的絕對路徑。
if(url!=null)
{
splash.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER);
}
setContentPane(splash);
Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();//獲得屏幕的大小
pack();
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);//使啟動窗口居中顯示
start();
}
public void start()
{
toFront();//window類的toFront()方法可以讓啟動界面顯示的時候暫時在最前面,用window類的setAlwayOnTop(boolean)方法可以讓窗口總保持在最前面。
splashThread=new Thread(this);
splashThread.start();
}
public void run()
{
try
{
setVisible(true);
Thread.sleep(50000);
}
catch(Exception e)
{
e.printStackTrace();
}
dispose();
}
static void showFrame(String title)
{
JFrame frame=new JFrame(title);
frame.setSize(400,300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize=frame.getToolkit().getScreenSize();//獲得屏幕的大小
Dimension frameSize=frame.getSize();
if(frameSize.heightscreenSize.height)
{
frameSize.height=screenSize.height;
}
if(frameSize.widthscreenSize.width)
{
frameSize.width=screenSize.width;
}
frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);
frame.setVisible(true);
}
public static void main(String[] args)
{
showFrame("Demo splash window");
JSplashWindow splash=new JSplashWindow();
//splash.start();
}
}
/*getToolkit()方法是java.awt.window類的方法它可以得到一個Toolkit類。Toolkit對象的getScreenSize()方法可以得到屏幕的大小。
getScreenSize()方法返回一個 Dimension對象,它的width,height屬性就是屏幕的寬和高。
Object getClass()方法是java.lang.Object類的方法它可以獲得當前正在運行類的對象
URL getResource(String name)方法是java.lang.Class類的方法用此方法可以獲得一個指定資源文件的絕對路徑。*/
我只實現(xiàn)了放大縮小功能,旋轉還有點問題package com.lzw;import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
/*
* @功能:實現(xiàn)圖片的放大縮小與旋轉功能
* @日期:2011.6.29
*/
public class OperationOnPic extends JFrame{
private JPanel imageJpanel;
private JPanel southJpanel;
private JButton rorateButton;
private Mycanvas canvas ;
private int imgWidth, imgHeight;
private JSlider jSlide; //滑動塊組建
// private JScrollPane jScrollPane ;
Image img;
private static int num=0;
private static int newWidth=0;
private static int newHeigth=0;
public static boolean isroate=false;
public OperationOnPic(){
setTitle("圖片操作");
//設置窗體大小
setSize(800, 600);
//設置窗體顯示在中央位置
setLocationRelativeTo(null);
//URL imgUrl = OperationOnPic.class.getResource("2.jpg"); //獲得圖片路徑
//img = Toolkit.getDefaultToolkit().getImage(imgUrl);// 獲取圖片資源
ImageIcon image=new ImageIcon(OperationOnPic.class.getResource("2.jpg"));
img=image.getImage();
canvas=new Mycanvas();
//調(diào)用布局方法
init();
//設置窗體可見
setVisible(true);
}
public void init(){
setDefaultCloseOperation(this.EXIT_ON_CLOSE); //設置窗體可關閉
imageJpanel=new JPanel();
southJpanel=new JPanel();
imageJpanel.setLayout(new BorderLayout());
imageJpanel.add(canvas,BorderLayout.CENTER);
imageJpanel.add(getJSlider(),BorderLayout.SOUTH);
rorateButton=new JButton("圖片旋轉");
rorateButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
num+=5;
isroate=true;
canvas.repaint();
isroate=false;
}
});
southJpanel.add(rorateButton); //將按鈕添加到面板上
this.getContentPane().add(imageJpanel,BorderLayout.CENTER);
this.getContentPane().add(southJpanel,BorderLayout.SOUTH);
}
public JSlider getJSlider(){
if(jSlide==null){
jSlide=new JSlider(); //實例化一個滑動塊對象
jSlide.setMaximum(500); //設置滑動塊的最大取值
jSlide.setMinimum(1); //設置滑動塊的最小取值
jSlide.setValue(50); //設置滑動塊當前值
jSlide.addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
canvas.repaint(); //重新繪制圖像
}
});
}
return jSlide;
}
public static void main(String[] args) {
new OperationOnPic();
}
class Mycanvas extends Canvas{
public void paint(final Graphics g){ //重寫paint
if(isroate==false){
imgWidth=img.getWidth(this);
imgHeight=img.getHeight(this);
float value=jSlide.getValue(); //取得滑動塊的值
newWidth=(int)(imgWidth*value/100);
newHeigth=(int)(imgHeight*value/100);
g.drawImage(img,0,0,newWidth,newHeigth,this);
g.dispose();
}else{
num+=5;
Graphics2D g2=(Graphics2D)g;
g2.rotate(Math.toRadians(num));
g2.drawImage(img,0,0,400,400,this);
g.dispose();
}
}
}
你也沒說是要把圖片下載下來還是什么的
這里我實現(xiàn)的是將圖片下載到電腦
import?java.io.File;
import?java.io.FileNotFoundException;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?java.io.InputStream;
import?java.net.HttpURLConnection;
import?java.net.MalformedURLException;
import?java.net.URL;
public?class?DownLoad?{
public?static?void?main(String[]?args)?{
File?dstFile?=?new?File("E:/test/test/test.jpg");
try?{
URL?url?=?new?URL("");
HttpURLConnection?conn?=?(HttpURLConnection)?url.openConnection();
InputStream?is?=?conn.getInputStream();
saveFile(is,?dstFile);
}?catch?(MalformedURLException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
public?static?void?saveFile(InputStream?is,File?dstFile){
FileOutputStream?fos?=?null;
File?parentFile?=?dstFile.getParentFile();
if(!parentFile.exists()){
parentFile.mkdirs();
}
try?{
fos?=?new?FileOutputStream(dstFile);
byte[]?buff?=?new?byte[1024?*?4];
int?len;
while((len?=?is.read(buff))?!=?-1){
fos.write(buff,?0,?len);
}
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
}?catch?(IOException?e)?{
e.printStackTrace();
}finally{
try{
if(is?!=?null){
is.close();
}
if(fos?!=?null){
fos.close();
}
}catch(IOException?e){
e.printStackTrace();
}
}
}
}