隨筆 - 5  文章 - 3  trackbacks - 0
          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          load進一個圖片,如果對它進行放大縮小呢? 查找了很多地方的資料,找到以下的方法可以解決放大縮小圖片問題: public static ImageIcon imageIconZoom(ImageIcon orgImageIcon, int newWidth, int newHeight) { BufferedImage tag = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_ARGB); tag.getGraphics().drawImage(orgImageIcon.getImage(), 0, 0, newWidth, newHeight, null); return new ImageIcon(tag); } 如何對圖片著色呢? static final float CRITICAL_BAND_MATRIX[][] = { { 1.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 0.0f,0.0f }, { 1.0f, 0.0f, 0.0f, 0.0f } }; static final float MAJOR_BAND_MATRIX[][] = { { 1.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.5f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f , 0.0f}, { 1.0f, 0.5f, 0.0f, 0.0f } }; static final float MINOR_BAND_MATRIX[][] = { { 1.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 1.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 0.0f, 0.0f } , { 1.0f, 1.0f, 0.0f, 0.0f }}; static final float WARNING_BAND_MATRIX[][] = { { 0.5f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 1.0f , 0.0f} , { 0.5f, 0.0f, 1.0f, 0.0f }}; static final float CLEAR_BAND_MATRIX[][] = { { 0.0f, 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 1.0f, 0.0f } }; static final float UNKNOWN_BAND_MATRIX[][] = { { 0.0f, 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f , 0.0f}, { 0.0f, 0.0f, 1.0f, 0.0f } , { 0.0f, 0.0f, 1.0f, 0.0f }}; public static ImageIcon ColorImage(ImageIcon orgImage, int alarmStatus ){ float[][] targetMatrix ; switch(alarmStatus){ case CommonConstants.ALARM_UNKNOWN: targetMatrix = UNKNOWN_BAND_MATRIX; break; case CommonConstants.ALARM_CLEAR: targetMatrix = CLEAR_BAND_MATRIX; break; case CommonConstants.ALARM_MINOR: targetMatrix = MINOR_BAND_MATRIX; break; case CommonConstants.ALARM_MAJOR: targetMatrix = MAJOR_BAND_MATRIX; break; case CommonConstants.ALARM_CRITICAL: targetMatrix = CRITICAL_BAND_MATRIX; case CommonConstants.ALARM_WARNING: targetMatrix = WARNING_BAND_MATRIX; break; default: targetMatrix = UNKNOWN_BAND_MATRIX; } BufferedImage b1 ; BufferedImage biSrc = new BufferedImage(orgImage.getIconWidth(), orgImage.getIconHeight(), BufferedImage.TYPE_INT_ARGB); // biSrc.getGraphics().setColor(Color.white); // biSrc.getGraphics().fillRect(0, 0, orgImage.getIconWidth(), orgImage.getIconHeight()); biSrc.getGraphics().drawImage(orgImage.getImage(),0,0,null); BufferedImage biTar = new BufferedImage(orgImage.getIconWidth(), orgImage.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Raster srcRaster = biSrc.getRaster(); WritableRaster dstRaster = (WritableRaster) biTar.getRaster(); BandCombineOp bandCombineOp = new BandCombineOp(targetMatrix, null); bandCombineOp.filter(srcRaster, dstRaster); b1 = biTar; return new ImageIcon(b1); } 其中值得一說,卻又說不清楚的地方是:BufferedImage.TYPE_INT_ARGB, 為什么要用TYPE_INT_ARGB,而不用TYPE_INT_RGB,之前我是用的TYPE_INT_RGB,而且matrix也是3*3的一個矩陣,后來發現,著色前,圖片透明的地方,著色后,變成了黑色的了,于是猜想ARGB中的A應該是alphe的意思,就摸索構造了矩陣,并且著了實驗,用是能用,不知道對不對啊。。。。
          posted on 2006-12-29 16:38 托托姆 閱讀(952) 評論(1)  編輯  收藏

          FeedBack:
          # re: java 中處理圖片的操作(原創) 2006-12-29 17:01 BeanSoft
          A 是透明的意思, 沒錯的.
          參考偶的文章:http://www.aygfsteel.com/beansoft/ Java 中收取郵件并自動縮放圖片的代碼(原創)  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 吴忠市| 永定县| 株洲市| 林甸县| 寿宁县| 阳泉市| 昆明市| 英德市| 东乌| 闵行区| 临沂市| 仁寿县| 巴马| 莒南县| 临沧市| 军事| 盱眙县| 壤塘县| 西充县| 凤庆县| 虞城县| 靖西县| 阳江市| 蓬莱市| 新化县| 莒南县| 利津县| 罗城| 宜丰县| 虹口区| 岳普湖县| 原阳县| 教育| 旬阳县| 淳安县| 湘乡市| 特克斯县| 山东省| 寿光市| 格尔木市| 独山县|