新聞中心
用java在jsp中顯示圖片,求例子代碼
%@ page language="java" pageEncoding="UTF-8"%
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、荷塘ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的荷塘網(wǎng)站制作公司
%@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標(biāo)簽不可能引用到本地的文件,比如C:\\xx.jpg你指定的路徑得是web目錄下的,動態(tài)生成圖片一般用servlet實現(xiàn),比如驗證碼之類的。
java實現(xiàn)圖片上傳至服務(wù)器并顯示,如何做?希望要具體的代碼實現(xiàn)
很簡單。
可以手寫IO讀寫(有點麻煩)。
怕麻煩的話使用FileUpload組件 在servlet里doPost嵌入一下代碼
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out=response.getWriter();
//設(shè)置保存上傳文件的目錄
String uploadDir =getServletContext().getRealPath("/up");
System.out.println(uploadDir);
if (uploadDir == null)
{
out.println("無法訪問存儲目錄!");
return;
}
//根據(jù)路徑創(chuàng)建一個文件
File fUploadDir = new File(uploadDir);
if(!fUploadDir.exists()){
if(!fUploadDir.mkdir())//如果UP目錄不存在 創(chuàng)建一個 不能創(chuàng)建輸出...
{
out.println("無法創(chuàng)建存儲目錄!");
return;
}
}
if (!DiskFileUpload.isMultipartContent(request))
{
out.println("只能處理multipart/form-data類型的數(shù)據(jù)!");
return ;
}
DiskFileUpload fu = new DiskFileUpload();
//最多上傳200M數(shù)據(jù)
fu.setSizeMax(1024 * 1024 * 200);
//超過1M的字段數(shù)據(jù)采用臨時文件緩存
fu.setSizeThreshold(1024 * 1024);
//采用默認(rèn)的臨時文件存儲位置
//fu.setRepositoryPath(...);
//設(shè)置上傳的普通字段的名稱和文件字段的文件名所采用的字符集編碼
fu.setHeaderEncoding("gb2312");
//得到所有表單字段對象的集合
List fileItems = null;
try
{
fileItems = fu.parseRequest(request);//解析request對象中上傳的文件
}
catch (FileUploadException e)
{
out.println("解析數(shù)據(jù)時出現(xiàn)如下問題:");
e.printStackTrace(out);
return;
}
//處理每個表單字段
Iterator i = fileItems.iterator();
while (i.hasNext())
{
FileItem fi = (FileItem) i.next();
if (fi.isFormField()){
String content = fi.getString("GB2312");
String fieldName = fi.getFieldName();
request.setAttribute(fieldName,content);
}else{
try
{
String pathSrc = fi.getName();
if(pathSrc.trim().equals("")){
continue;
}
int start = pathSrc.lastIndexOf('\\');
String fileName = pathSrc.substring(start + 1);
File pathDest = new File(uploadDir, fileName);
fi.write(pathDest);
String fieldName = fi.getFieldName();
request.setAttribute(fieldName, fileName);
}catch (Exception e){
out.println("存儲文件時出現(xiàn)如下問題:");
e.printStackTrace(out);
return;
}
finally //總是立即刪除保存表單字段內(nèi)容的臨時文件
{
fi.delete();
}
}
}
注意 JSP頁面的form要加enctype="multipart/form-data" 屬性, 提交的時候要向服務(wù)器說明一下 此頁面包含文件。
如果 還是麻煩,干脆使用Struts 的上傳組件 他對FileUpload又做了封裝,使用起來更傻瓜化,很容易掌握。
-----------------------------
以上回答,如有不明白可以聯(lián)系我。
選擇圖片在面板顯示,java代碼如何實現(xiàn)?
是這樣的,你在面板上搞一個和面板一樣大的JLabel
然后,通過JFileChooser獲得路徑,利用這個圖片的路徑,構(gòu)建一個ImageIcon
最后,根據(jù)這個ImageIcon去給JLabel對象setIcon(ImageIcon對象);
具體地:
1.panel.add(label,BorderLayout.CENTER);
2.ImageIcon icon = new ImageIcon(url);
3.label.setIcon(icon);
java如何讀取文件夾中的圖片并在界面顯示
下面給你提供一個實現(xiàn),該實現(xiàn)采用了代理模式。這個實現(xiàn)包含兩個文件,分別是Client.java和ImageIcoProxy.java,ImageIcoProxy.java負(fù)責(zé)了圖片的延遲加載,你可以修改為不延遲即可。
Client.java的代碼為:
import java.awt.Graphics;
import java.awt.Insets;
import javax.swing.Icon;
import javax.swing.JFrame;
public class Client extends JFrame {
private static int IMG_WIDTH = 510;
private static int IMG_HEIGHT = 317;
private Icon imgProxy = null;
public static void main(String[] args) {
Client app = new Client();
app.setVisible(true);
}
public Client() {
super("Virture Proxy Client");
imgProxy = new ImageIcoProxy("D:/test.jpg", IMG_WIDTH, IMG_HEIGHT);
this.setBounds(100, 100, IMG_WIDTH + 10, IMG_HEIGHT + 30);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics g) {
super.paint(g);
Insets insets = getInsets();
imgProxy.paintIcon(this, g, insets.left, insets.top);
}
}
ImageIcoProxy.java的代碼為:
import java.awt.Component;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.SwingUtilities;
public class ImageIcoProxy implements Icon {
private ImageIcon realIcon = null;
private String imgName;
private int width;
private int height;
boolean isIconCreated = false;
public ImageIcoProxy(String imgName, int width, int height) {
this.imgName = imgName;
this.width = width;
this.height = height;
}
public int getIconHeight() {
return realIcon.getIconHeight();
}
public int getIconWidth() {
return realIcon.getIconWidth();
}
public void paintIcon(final Component c, Graphics g, int x, int y) {
if (isIconCreated) {
//已經(jīng)加載了圖片,直接顯示
realIcon.paintIcon(c, g, x, y);
g.drawString("Just Test", x + 20, y + 370);
} else {
g.drawRect(x, y, width-1, height-1);
g.drawString("Loading photo...", x+20, y+20);
synchronized(this) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
Thread.currentThread().sleep(2000);
realIcon = new ImageIcon(imgName);
isIconCreated = true;
} catch (Exception e) {
e.printStackTrace();
}
c.repaint();
}
}
);
}
}
}
}
java圖片顯示代碼
不是很明白,
類似于啟動界面的么?
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));//設(shè)置啟動界面的光標(biāo)樣式
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類的方法它可以獲得當(dāng)前正在運行類的對象
URL getResource(String name)方法是java.lang.Class類的方法用此方法可以獲得一個指定資源文件的絕對路徑。*/
有大神說一下Java這種組合框顯示圖片具體的代碼,謝謝了
效果圖如下
swing和awt寫法差別不大,我使用的是swing的組件
參考代碼和注釋如下
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//本窗口繼承自JFrame?實現(xiàn)了?ActionListener接口
public?class?JCBFrame?extends?JFrame?implements?ItemListener{
JComboBoxString?jcb;
JLabel?jlimg;
//?文字
String[]?ss?=????{"櫻桃","香蕉","西瓜"};
//文字對應(yīng)圖片位置
String[]?icons?=?{"img/1.jpg","img/2.jpg","img/3.jpg"};
int?init?=?2;//初始選擇的下標(biāo)--西瓜
public?JCBFrame()?{
jcb?=?new?JComboBoxString(ss);
jcb.setSelectedIndex(init);//初始選擇的項目
jcb.addItemListener(this);//設(shè)置條目事件響應(yīng)?,比如選中某個條目的處理
add(jcb,BorderLayout.NORTH);
jlimg?=?new?JLabel();
jlimg.setHorizontalAlignment(JLabel.CENTER);
add(jlimg);
showImg(init);//初始顯示的圖片
//窗口屬性的設(shè)置
setTitle("測試窗口");//標(biāo)題
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(260,?300);//大小
setLocationRelativeTo(null);//居中
}
//顯示圖片
private?void?showImg(int?index)?{
jlimg.setIcon(?new?ImageIcon(this.getClass().getResource(icons[index])));
}
//main方法
public?static?void?main(String[]?args)?{
new?JCBFrame().setVisible(true);//實例化并可見
}
@Override
public?void?itemStateChanged(ItemEvent?e)?{
if(e.getStateChange()==ItemEvent.SELECTED)?{//當(dāng)選擇某個條目時
showImg(jcb.getSelectedIndex());//顯示的圖片改變
}
}
}
網(wǎng)站名稱:java圖片顯示代碼,用java編程實現(xiàn)圖片顯示
分享URL:http://www.ef60e0e.cn/article/hsdhci.html