當前位置:首頁 » 編程語言 » java的imageio

java的imageio

發布時間: 2022-05-31 01:38:48

java:image.ImageIO類的getRGB()方法,返回的是什麼

java:image.ImageIO類的getRGB()方法返回的是一個整型數據。
這個方法可以從圖片的指定區域讀取ARGB像素值,並存儲到rgbData數組中,rgbData中的數據是以0xAARRGGBB格式存儲的,代表每個像素的顏色屬性和透明屬性。返回值就是RGB色彩。
RGB色彩模式是工業界的一種顏色標准,是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標准幾乎包括了人類視力所能感知的所有顏色,是目前運用最廣的顏色系統之一。

❷ 怎樣使用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:\\358x441 - 111.jpg", "C:\\358x441 - 333.jpg");
}
}

❸ Java壓縮圖片ImageIO.read()報錯

BufferedImage sourceImg =ImageIO.read(new FileInputStream(new File(toPath)));

或者

BufferedImage sourceImg =ImageIO.read(new File(toPath));

❹ java ImageIO是什麼功能,詳細說一下

它主要就是處理圖片信息的。
知道一個類後,多看寫他的API,會很有幫助的。
http://www.apihome.cn/api/java/ImageIO.html

❺ java imageio寫入數據後生成的文件為什麼會比實際寫入的大

你把攝像機拍攝的圖片的一部分數據(二進制數據)用兩種方式存到硬碟的文件上.

方式一,把這些二進制數據編碼成jpg圖片,並保存,這里會加入一些"元數據",所以會比你想像中的大.
方式二,直接把二進制數據流寫到硬碟上文件中,沒有加入"元數據"所以數據大小沒發生變化.
你可以想像一下方式一類似在MS Word文檔中只存一個字母a,方式二類似在記事本中只存一個字母a,然後你比較這兩個文件的大小.

❻ imageio java最大能讀取多大尺寸的圖片

BufferedImage image = javax.imageio.ImageIO.read(file);報錯:java.lang.OutOfMemoryError
: Java heap space
圖片大小是3425px*4843px,我本機內存1g。
------解決方案--------------------------------------------------------
Xms Xmx 把jvm的heap 調大點 試試~~~
------解決方案--------------------------------------------------------
設置一下stack size的大小 java 後跟參數即可設置,具體參數如下:
-Xms size set initial Java heap size
-Xmx size set maximum Java heap size
-Xss size set java thread stack size
------解決方案--------------------------------------------------------
用java.exe -Xmx1024m -Xms256m .來運行的程序,你機器是1G但是又沒分配給jvm
------解決方案--------------------------------------------------------
ImageIO.read(File file)使用來自boolean getUseCache() 和 File getCacheDirectory()的當前緩存設置控制所創建的 ImageInputStream 中的緩存。其中getUseCache()默認設定是true,getCacheDirectory()返回的是setCacheDirectory(File cacheDirectory)所設定的目標,如果用戶沒有明顯設定,那麼getCacheDirectory()返回的將是null。

❼ Java/J2SE中的ImageIO影響了繪制速度,怎麼解決

使用
ImageIcon img=new ImageIcon("圖片地址");
Image m=img.getImage();
速度會快一些。
另外使用媒體載入器MediaTracker類,將需要的圖片對象全部載入進來再操作,會提高速度。原理是把所有圖像載入到內存中再讀取,而不是從外存磁碟載入,讀取。

❽ java imageIO 讀取圖片問題

試了一下,這張jpg圖片中含有大量的元數據(註解數據),結構復雜,導致java讀取錯誤。
可用畫圖等圖片編輯軟體「另存為」或者「導出」一下,同時去掉元數據。
就可以被ImageIO讀取

❾ Java的imageIO讀取圖片後,怎麼把他顯示在panel上呢

您好:讀取bmp文件到BufferedImage中

File file2 = new File("c:\\testimages\\tttt" + ".bmp");
// BufferedImage bi = backstore.getBufferedImage();
try {
output = ImageIO.read(file2);
} catch (IOException e) {
e.printStackTrace();
}

輸出bmp文件

File file2 = new File("c:\\testimages\\tttt" + ".bmp");
ImageIO.write(bi, "bmp", file2);

Byte[]輸出到文件

byte[] buf =UtilZip.zipObjectToByte(cache);
File file2 = new File("c:\\testimages\\cache.bin");
FileOutputStream fos =new FileOutputStream(file2);
fos.write(buf);
fos.flush();
fos.close();

讀文件到Byte[]中

File file2 = new File("c:\\testimages\\cache.bin");
FileInputStream fis = new FileInputStream(file2);
byte[] buf = new byte[(int) file2.length()];
fis.read(buf);
fis.close();

填充顏色到整個畫布

BufferedImage bi = backstore.getBufferedImage();
Graphics g2 = bi.getGraphics();
g2.setColor(Color.red);
g2.fillRect(0, 0, Common.width,
Common.height);

圖像變灰操作

public finalBufferedImage getGrayPicture(BufferedImage originalPic) {
int imageWidth = originalPic.getWidth();
int imageHeight = originalPic.getHeight();

BufferedImage newPic = new BufferedImage(imageWidth, imageHeight,
BufferedImage.TYPE_3BYTE_BGR);

ColorConvertOp cco = new ColorConvertOp(ColorSpace
.getInstance(ColorSpace.CS_GRAY), null);
cco.filter(originalPic, newPic);
return newPic;
}

ImageIO
javax.imageio.ImageIO lets you save and restore Images to disk in a platform independent format. It works using plug-in moles that handle various formats including "gif", "png" and "jpeg" (all lower case, or all upper case, but not mixed). "jpeg" or "jpg" is acceptable. Use ImageIO. getWriterFormatNames() to find out which types are supported on your platform:

import javax.imageio.ImageIO;

public class Jai
{

public static void main ( String[] args )
{
String[] names = ImageIO.getWriterFormatNames();
for ( String name: names )
{
System.out.println( name );
}
}
}

Loading an Image from raw bytes
Here raw bytes represent the image of a *.gif, *.png or

// raw bytes to BufferedImage
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import javax.imageio.ImageIO;
...
BufferedImage image = ImageIO.read ( new ByteArrayInputStream ( rawImageBytes ) );

Saving an Image to raw bytes
// BufferedImage to raw bytes
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
...

// O P E N
ByteArrayOutputStream baos = new ByteArrayOutputStream( 1000 );

// W R I T E
ImageIO.write( aBufferedImage, "jpeg" ,
baos );

// C L O S E
baos.flush();
byte[] resultImageAsRawBytes = baos.toByteArray();

baos.close();

Loading a BufferedImage from a file
// file to BufferedImage
import java.awt.image. BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
...
BufferedImage image = ImageIO.read( new File( "rabbit.jpg" ) );
Saving a BufferedImage to a file
// BufferedImage to File
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
...
ImageIO.write( aBufferedImage, "jpeg" ,
new File ( "snap.jpg" ) );

ImageWriteParam is a way of controlling exactly how the image in encoded. There is currently no PNG support for it. This is not for injecting meta info.
Loading a BufferedImage from an URL
// url to BufferedImage
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
...
BufferedImage image = null;
try
{
image = ImageIO.read( url );
}
catch ( IOException e )
{
System.out.println( "image missing" );
}

Converting Image to BufferedImage
// Image to BufferedImage
import java.awt.image.BufferedImage;
import java.awt.Image;
...
BufferedImage bufferedImage = new BufferedImage ( imageWidth,
imageHeight,
BufferedImage.TYPE_INT_BGR );
bufferedImage.createGraphics().drawImage( image, 0, 0, this );

❿ java imageio.read error reading png image data怎麼處理

我想問問有沒方法可以讓這樣圖片正常的讀取? 其實我要實現的功能很簡單就系對原圖進行裁切處理得到一張處理過後的圖片,以下是我的代碼(沒有帶裁切不部分,因為報錯是以為文件解析讀取的問題而導致的):

package imgIOTest;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Test23 {
public static void main(String[] args) {

熱點內容
騰訊雲伺服器購買網址 發布:2025-02-11 21:37:46 瀏覽:60
安卓電話視頻怎麼投電視上 發布:2025-02-11 21:32:27 瀏覽:18
易簽到源碼 發布:2025-02-11 21:31:03 瀏覽:498
編程班會 發布:2025-02-11 21:27:19 瀏覽:738
ubuntu編譯fortran 發布:2025-02-11 21:21:59 瀏覽:201
雲伺服器寬頻單位 發布:2025-02-11 20:48:11 瀏覽:538
安卓數據線公頭是哪個 發布:2025-02-11 20:45:42 瀏覽:812
網址原始密碼是什麼 發布:2025-02-11 20:33:52 瀏覽:72
怎麼創建伺服器我的世界網易 發布:2025-02-11 20:18:36 瀏覽:467
伺服器電腦與客戶端的連接 發布:2025-02-11 20:18:32 瀏覽:36