Ⅰ 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 用usb傳輸數據需要 學習哪些相關方面
java學習是由簡入難的學習過程,不要一開始就學習太過於復雜的,也不要好高騖遠,java的基礎很重要,所以一定要由最基礎的學起,抓實基礎。下面是筆者結合大部分情況為大家總結的java學習流程。
首先要學習java的基礎知識。
不要被新技術迷惑,所謂萬變不離其宗,新技術都是基於java的基礎之上,如果基礎不扎實,對於這些新技術的理解也是一知半解,學不到根源。
1、web開發
全面的JEE的web開發知識:Servlet+jsP+javaBean+TagLib,到這里做一個完整的web應用項目開發。
2、J2EE基礎
j2ee說白了就是做網頁,這時候你要從先從java里脫身出來,學些跟網頁有關的東西:
html:很簡單的東西不是太笨的話半天左右即可搞定
js:易學難精,想速度找工作不必花太多時間,隨便買本javascript書略讀並備查推薦:JavaScript高級程序設計;JavaScript權威指南
資料庫:如果沒有基礎的話,建議多花時間,至少一個月,開始建議用mysql,然後是oracle,然後是sqlserver,這段時間最關鍵的就是sql語言的編寫。
xml
就是一種封裝數據的格式,沒啥好學的,練習一下怎麼用dom4j或者jdom讀寫xml即可。
jsp,servlet,tomcat:
這段時間說白了就是用jsp來做個網站。
3、EJB開發
包含全面的EJB知識:1)EJB入門和無狀態會話Bean;2)有狀態會話Bean;3)BMP和CMP是實體Bean;4)jms和MessageDrivenBean;5)事物和安全(JTA、JTS和JAAS);6)WebService的開發和應用;
框架其實就是一些公共的工具和方法,被封裝到一個盒子中供您隨時調用,框架也是別人用java編寫的,相當於你調用別人寫好的公共模塊,可以節省時間和效率。
主要是3大框架:
mvc框架:struts,struts2,jsf
or映射框架:hibernate,ibatis
業務框架:spring
重量級框架:ejb
這些都是java技術的學習知識點,和學習流程,先簡單後復雜,由一個點展開,開始更廣更深入的學習。這些都掌握了以後,你就學會了java,具備了基本編程的能力,但不代表你就能做出優良的產品,所以接下來,你就需要學習軟體工程和演算法,進一步的提升自己。
Ⅲ java 代碼中如何將一個24位點陣圖(123.bmp)轉換成單色點陣圖(123.bmp) 頭疼啊,求大神幫忙,
BufferedImage sourceImg = ImageIO.read(new File("c:\\aa.bmp"));
int h = sourceImg.getHeight();
int w = sourceImg.getWidth();
int[] pixels = new int[w * h]; // 定義一數組,用來存儲圖片的象素
int gray;
PixelGrabber pg = new PixelGrabber(sourceImg, 0, 0, w, h, pixels, 0, w);
try {
pg.grabPixels(); // 讀取像素值
} catch (InterruptedException e) {
System.err.println("處理被異常中斷!請重試!");
}
for (int j = 0; j < h; j++) // 掃描列 {
for (int i = 0; i < w; i++) // 掃描行
{ // 由紅,綠,藍值得到灰度值
gray = (int) (((pixels[w * j + i] >> 16) & 0xff) * 0.8);
gray += (int) (((pixels[w * j + i] >> 8) & 0xff) * 0.1);
gray += (int) (((pixels[w * j + i]) & 0xff) * 0.1);
pixels[w * j + i] = (255 << 24) | (gray << 16) | (gray << 8)
| gray;
}
}
MemoryImageSource s= new MemoryImageSource(w,h,pixels,0,w);
Image img =Toolkit.getDefaultToolkit().createImage(s);
BufferedImage buf = new BufferedImage(w, h, BufferedImage.TYPE_BYTE_GRAY);
buf.createGraphics().drawImage(img, 0, 0, null);
ImageIO.write(buf, "BMP", new File("c:\\111.bmp"));
研究了一晚上,累死了
Ⅳ java截屏有哪幾種方法
前台方式
1. 利用html2canvas實現前台截屏
html2canvas項目的gitHub地址
html2canvas示例
html2canvas可以將HTML代碼塊進行截取,並生成快照形式的canvas,然後可以利用html5的下載功能提供圖片的下載介面,供用戶下載。
優點:前台技術,實現比較容易。
缺點:此項目使用了html5的技術,因此在對IE的兼容上,只可以在IE9+的版本上使用。
使用時,需要引用jQuery.js和html2canvas.js。(html2canvas.js可以在github上下載)
具體JavaScript代碼如下:
var canvas = function () {
html2canvas($("#chart"), {
onrendered: function (canvas) {
$("#class11").html(canvas);//將id為「class11」部分的代碼轉換為canvas
var type = 'png';//圖片類型為png
var imgData = canvas.toDataURL('png');//將圖片轉換為png類型的流
var _fixType = function (type) {
type = type.toLowerCase().replace(/jpg/i, 'jpeg'); var r = type.match(/png|jpeg|bmp|gif/)[0]; return 'image/' + r;
}; var saveFile = function (data, filename) {
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename; var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
}; //下載時的文件名
var filename = 'fe_' + (new Date()).getTime() + '.' + type; // 下載文件
saveFile(imgData, filename);
}
});
後台方式(java)
1. 利用html2image實現
html2image的地址(google)
html2image是可以識別html標簽並將html轉換成圖片的java項目。
優點:後台轉換,故對瀏覽器的版本基本沒有要求。
缺點:對樣式的識別不是很好,轉換出來的圖片比較簡單,基本沒有可以兼容的樣式。
使用方式:maven中引用如下依賴:
<dependency>
<groupId>com.github.xuwei-k</groupId>
<artifactId>html2image</artifactId>
<version>0.1.0</version></dependency>12345
2. 利用DJNativeSwing項目實現
純java代碼實現。使用DJNativeSwing這個項目,構建一個swing瀏覽器,打開網址,之後截取圖片。(需要eclipse的swt庫支持)
優點:純java實現。
缺點:需要多線程的支持,只在控制台方式實現過(由於本人對於多線程的掌握較弱,目前沒有在spring項目中實現這個方法,求大神指導~~)
3. 利用phantomJs實現
phantomJs的GitHub地址
phantomJs官網
phantom利用的是webKit內核,全面支持web而不需瀏覽器支持,快速,原生支持各種Web標准。
優點:速度快,使用簡單。
缺點:需要在項目的伺服器端引用exe文件進行截圖,並發性能有待考證。
Ⅳ Java如何讀取BMP的每個像素點,輸出到一個二維數組
//我在程序中列印出了每一個坐標的RGB值,你自己整理整理,求個平均值,
//放到你的那個二維數組里。
//自己用畫圖工具做一個小圖片,注意圖片的名字和程序中一致哦~
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.*;
public class Test{
public static void main(String args[]) {
int[] rgb = new int[3];
File file = new File("a.bmp");
BufferedImage bi=null;
try{
bi = ImageIO.read(file);
}catch(Exception e){
e.printStackTrace();
}
int width=bi.getWidth();
int height=bi.getHeight();
int minx=bi.getMinX();
int miny=bi.getMinY();
System.out.println("width="+width+",height="+height+".");
System.out.println("minx="+minx+",miniy="+miny+".");
for(int i=minx;i<width;i++){
for(int j=miny;j<height;j++){
//System.out.print(bi.getRGB(jw, ih));
int pixel=bi.getRGB(i, j);
rgb[0] = (pixel & 0xff0000 ) >> 16 ;
rgb[1] = (pixel & 0xff00 ) >> 8 ;
rgb[2] = (pixel & 0xff );
System.out.println("i="+i+",j="+j+":("+rgb[0]+","+rgb[1]+","+rgb[2]+")");
}
}
}
}