本文目錄一覽:
- 1、java image
- 2、關於java里image的用法
- 3、Java:Image和BufferedImage的區別是什麼?
- 4、java Image怎麼獲取圖片的長寬
- 5、怎樣使用java讀取image
- 6、怎麼把java中的Image對象保存到硬盤上
java image
java image是什麼,讓我們一起了解一下?
Image主要是實現讀取圖片文件(Image.FromFile)和保存圖像文件(Image.Save)。只要將圖片轉為Image類之後,就可以用.Net裡面強大的GDI+功能,但GDI+必須先要創建Graphics。
那麼如何創建Image圖像?
1、通過文件選擇器選擇文件,創建File文件,創建Image圖像。
Image images = new Image(); JFileChooser chooser = new JFileChooser(); chooser.setName(“選擇”); chooser.setMultiSelectionEnabled(false); //設置文件選擇器只能選擇單個文件 int result = chooser.showOpenDialog(this); //打開文件選擇器 if(result == JFileChooser.APPROVE_OPTION){ File file = chooser.getSelectedFile(); try{ //對異常進行處理 images = ImageIO.read(file); }catch(IOException e){ e.printStackTrace(); } }
2、通過Toolkit工具中的函數創建Image圖像。 Image images = new Image(); Toolkit tool = Toolkit.getDefaultToolkit(); images = tool.getImage(“1.gif”);//字符串為絕對路徑或相對路徑
關於java里image的用法
先要設置圖片路徑,我們將一將背景圖片back.jpg放到C盤的img目錄下,調用語句如下:
ImageIcon icon=new ImageIcon(“C:\\img\\back.jpg),一定要是雙反斜杠
然後分別在JComponent里添加圖片
JFrame
利用JFrame的一個方法setIconImage(Image image);
由於要用到Image類,所以還得把上面定義的ImageIcon對象轉換成Image對象:
Image image=icon.getImage();
然後就可以調用JFrame的setIconImage(image)方法了。
還要注意一點的是,由於有些圖片的格式JVM不能識別,所以要轉格式,一般為jpg,gif.如把.bmp格式的轉換為.jpg,不能簡單的把後綴名改了就行,這樣照樣不能顯示。方法很簡單,直接用WINDOWS自帶的畫圖工具打開圖片,然後另存為時改為.jpg或.gif格式就可以了。
附源代碼
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JTree;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import java.awt.FlowLayout;
public class ImageTest extends JFrame{
ImageIcon icon=new ImageIcon(“c:\\img\\system.jpg”);
Image image=icon.getImage();
public ImageTest()
{
JMenuBar mb=new JMenuBar();
this.setJMenuBar(mb);
JMenu menu=new JMenu(“system”);
menu.setIcon(icon);
//JMenuItem item=new JMenuItem(“exit”,icon);
JMenuItem item=new JMenuItem(icon);
item.setIcon(icon);
JLabel label=new JLabel(icon);
//label.setIcon(icon);
menu.add(item);
mb.add(menu);
DefaultMutableTreeNode root=new DefaultMutableTreeNode();
DefaultMutableTreeNode node1=new DefaultMutableTreeNode();
DefaultMutableTreeNode node11=new DefaultMutableTreeNode();
DefaultMutableTreeNode node12=new DefaultMutableTreeNode();
DefaultMutableTreeNode node2=new DefaultMutableTreeNode();
DefaultMutableTreeNode node21=new DefaultMutableTreeNode();
root.add(node1);
root.add(node2);
node1.add(node11);
node1.add(node12);
node2.add(node21);
JTree jTree1 = new javax.swing.JTree(root);
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setOpenIcon(new ImageIcon(“C:\\img\\down.jpg”)); //展開時節點圖標
renderer.setClosedIcon(new ImageIcon(“C:\\img\\file.jpg”)); //摺疊時節點圖標
renderer.setLeafIcon(new ImageIcon(“C:\\img\\man_small.jpg”)); //葉子節點圖標
jTree1.setCellRenderer(renderer);
this.add(label);
this.setIconImage(image);
this.add(jTree1);
this.setDefaultCloseOperation(3);
this.setLocation(300,400);
this.pack();
this.setVisible(true);
}
public static void main(String[] args)
{
new ImageTest();
}
}
Java:Image和BufferedImage的區別是什麼?
Image是一個抽象類,BufferedImage是Image的實現類。
Image和BufferedImage的主要作用就是將一副圖片加載到內存中。
BufferedImage 子類描述具有可訪問圖像數據緩衝區的 Image。BufferedImage 由圖像數據的 ColorModel 和 Raster 組成。Raster 的 SampleModel 中 band 的數量和類型必須與 ColorModel 所要求的數量和類型相匹配,以表示其顏色和 alpha 分量。所有 BufferedImage 對象的左上角坐標都為 (0, 0)。因此,用來構造 BufferedImage 的任何 Raster 都必須滿足:minX=0 且 minY=0。
Java將一副圖片加載到內存中的方法是:
String imgPath = “D://demo.bmp”;
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));
該方法BufferedImage 可以獲得圖片的詳細信息,例如:獲得圖片的寬度:image.getWidth(null);圖片只有加載內存中才能對圖片進行進一步的處理。
java Image怎麼獲取圖片的長寬
通過getHeight和getwidth方法獲取長和寬
比如:
System.out.println(“圖片長度:”+image.getHeight());
System.out.println(“圖片寬度:”+image.getWidth());
補充:
Image是一個抽象列,BufferedImage是Image的實現。
Image和BufferedImage的主要作用就是將一副圖片加載到內存中,在內存中能對圖片的信息進行獲取。
怎樣使用java讀取image
這是一個圖片壓縮代碼,以前入職的時候照片必須得20k一下,所以我把100多k的照片壓縮成了16k,你可以看一下
package com.atee.test;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
public class ImageShrink {
public static boolean compressPic(String srcFilePath, String descFilePath) throws IOException {
File file = null;
BufferedImage src = null;
FileOutputStream out = null;
ImageWriter imgWrier;
ImageWriteParam imgWriteParams;
// 指定寫圖片的方式為 jpg
imgWrier = ImageIO.getImageWritersByFormatName(“jpg”).next();
imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(
null);
// 要使用壓縮,必須指定壓縮方式為MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
// 這裡指定壓縮的程度,參數qality是取值0~1範圍內,
imgWriteParams.setCompressionQuality((float) 0.7);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel colorModel =ImageIO.read(new File(srcFilePath)).getColorModel();// ColorModel.getRGBdefault();
// 指定壓縮時使用的色彩模式
// imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
// colorModel, colorModel.createCompatibleSampleModel(16, 16)));
imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(
colorModel, colorModel.createCompatibleSampleModel(16, 16)));
try {
if (isBlank(srcFilePath)) {
return false;
} else {
file = new File(srcFilePath);System.out.println(file.length());
src = ImageIO.read(file);
out = new FileOutputStream(descFilePath);
imgWrier.reset();
// 必須先指定 out值,才能調用write方法, ImageOutputStream可以通過任何
// OutputStream構造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
// 調用write方法,就可以向輸入流寫圖片
imgWrier.write(null, new IIOImage(src, null, null),
imgWriteParams);
out.flush();
out.close();
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
public static boolean isBlank(String string) {
if (string == null || string.length() == 0 || string.trim().equals(“”)) {
return true;
}
return false;
}
public static void main(String[] args) throws IOException {
compressPic(“C:\\358×441 – 111.jpg”, “C:\\358×441 – 333.jpg”);
}
}
怎麼把java中的Image對象保存到硬盤上
javax.imageio.ImageIO
public static boolean write(RenderedImage im,
String formatName,
File output)
throws IOException
使用支持給定格式的任意 ImageWriter 將一個圖像寫入 File。如果已經有一個 File 存在,則丟棄其內容。
參數:
im – 要寫入的 RenderedImage。
formatName – 包含格式的非正式名稱的 String。
output – 將在其中寫入數據的 File。
返回:
如果沒有找到合適的 writer,則返回 false。
拋出:
IllegalArgumentException – 如果任何參數為 null。
IOException – 如果在寫入過程中發生錯誤。
即可
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258127.html