public int nextInt(int n) {
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)正安,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
if (n = 0)
throw new IllegalArgumentException("n must be positive");
if ((n -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) 31);
int bits, val;
do {
bits = next(31);
val = bits % n;
} while (bits - val + (n-1) 0);
return val;
}
一般都是這樣的,就是在你服務(wù)器有一個(gè)專門放置圖片的文件夾,然后數(shù)據(jù)庫保存的是你服務(wù)器圖片的路徑。需要用的時(shí)候就去數(shù)據(jù)庫里面取路徑。得到路徑以后你想怎么處理圖片是你的事情了。
至于如何去數(shù)據(jù)庫取路徑這個(gè)就是簡單的db操作。
加載驅(qū)動類:
Class.forName(DBDriver);
獲取連接:
Connection
conn
=
DriverManager.getConnection(url,username,password);
創(chuàng)建操作對象:
PreparedStatement
stmt
=
con.prepareStatement(sql);
執(zhí)行操作:
ResultSet
rs
=
stmt.executeQuery();
遍歷結(jié)果:
List
list
=
new
ArrayList();
while(rs.next()){
//具體操作,通常用rs.getString(name)取值
Image
img
=
new
Image();//圖片類對應(yīng)你數(shù)據(jù)庫中圖片表格
img.setSrc(rs.getString("src"));//假設(shè)你數(shù)據(jù)庫中image表中圖片地址字段是src
list.add(img);
}
記得關(guān)閉資源:
rs.close();
stmt.close();
con.close();
看你的意思是已經(jīng)取出來了不知道怎么顯示:
你取出來之后可以把圖片放在一個(gè)list里面然后去頁面上遍歷這個(gè)list
c:forEach
var="chakan1"
items="list"
tr
td
img
src="${chakan1.src}"/
/td
/tr
/c:forEach
大致應(yīng)該是這樣
ImageIO.write(BufferedImage, "JPG", File);
================================
傳入Component保存圖像的方法,你試試看還有沒有變色。
public void cutScreen(Component com) {
Rectangle rect = com.getBounds();
BufferedImage bi = (BufferedImage) com.createImage(rect.width,
rect.height);
Graphics g = bi.getGraphics();
com.paint(g);
g.dispose();
JFileChooser jfc = new JFileChooser();
jfc.setFileFilter(new FileFilter() {
public boolean accept(File f) {
return f.isDirectory()
|| f.getName().toLowerCase().endsWith(".jpg");
}
public String getDescription() {
return "*.jpg";
}
});
int type = jfc.showSaveDialog(null);
if (type == 0) {
File file = jfc.getSelectedFile();
name = file.getName().toLowerCase();
if (!name.endsWith("jpg")) {
String path = file.getAbsolutePath();
file = new File(path + ".jpg");
for (int i = 0; file.exists(); i++) {
file = new File(path + "(" + i + ").jpg");
}
}
try {
if (!file.exists()) {
file.createNewFile();
}
ImageIO.write(bi, "JPG", file);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
首先,建立數(shù)據(jù)庫(主意image的數(shù)據(jù)類型):
CREATE TABLE image (
id int(5) NOT NULL,
name varchar(25) default NULL,
photo blob,
PRIMARY KEY (`id`)
);
以下是Java Code:
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/databaseName", "root", "root");
String INSERT_PICTURE = "insert into image (id, name, photo) values (?, ?, ?)";
FileInputStream fis = null;
PreparedStatement ps = null;
try {
conn.setAutoCommit(false);
File file = new File("myPhoto.png");
fis = new FileInputStream(file);
ps = conn.prepareStatement(INSERT_PICTURE);
ps.setString(1, "001");
ps.setString(2, "name");
ps.setBinaryStream(3, fis, (int) file.length());
ps.executeUpdate();
conn.commit();
} finally {
ps.close();
fis.close();
}
}
大概流程:
1.上傳插件的選擇:此篇博文選擇的是jQuery的zyupload文件上傳插件;
2.上傳請求發(fā)起后,java代碼的處理:你是要將上傳的圖片只保存在服務(wù)器還是只保存在數(shù)據(jù)庫還是說兩者都采取。上傳到服務(wù)器很簡單,保存到數(shù)據(jù)庫也很簡單,但是此處需要考慮業(yè)務(wù),圖片保存在數(shù)據(jù)庫時(shí)采用哪種保存方式(本博文業(yè)務(wù)來自于項(xiàng)目,因?yàn)閳D片數(shù)量巨多,故在數(shù)據(jù)庫是通過保存圖片的路徑實(shí)現(xiàn)的,并非二進(jìn)制流);
3.圖片保存在數(shù)據(jù)庫后,在前段頁面的回顯功能。
首先導(dǎo)入各種需要的包:
import java.awt.Image;
import javax.imageio.ImageIO;
import java.io.*;
讀取圖片的方法如下:
Image[] array = new Image[10];
Image image = ImageIO.read(new File("d:\\source.gif"));//根據(jù)你實(shí)際情況改文件路徑吧
array[0] = image;
圖片讀出來了。
如果你有一個(gè)Image對象,想把它寫入文件可以這樣做:
BufferedImage image = ImageIO.read(new File("d:\\source.gif"));
//要想保存這個(gè)對象的話你要把image聲明為BufferedImage 類型
ImageIO.write(image, "png", new File("f:\\test.png"));
名稱欄目:java對圖片的儲存代碼 用java編程實(shí)現(xiàn)圖片顯示
網(wǎng)站鏈接:http://www.muchs.cn/article40/doocpho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、外貿(mào)建站、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)