ImageIcon圖像處理相關測試【一些特殊的處理方式】

来源:http://www.cnblogs.com/newwind/archive/2016/07/07/5650079.html
-Advertisement-
Play Games

/*************以下源碼通過測試******************************/ package cn.jason.ios.images; import java.awt.FileDialog;import java.awt.Image;import java.io.Fil ...


/*************以下源碼通過測試******************************/

package cn.jason.ios.images;

import java.awt.FileDialog;
import java.awt.Image;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
*
* ImageIcon圖像處理相關測試[一些特殊的處理方式]
*
*/
public class MyImageIcon extends JFrame{

/**
* 打開本地管理器對話框,選擇圖片文件
* @return 返回圖片絕對路徑
*/
private static String getLocalImageAbsolutePath(){
JFrame frame=new JFrame();
//創建對話框
FileDialog dialog=new FileDialog(frame);
//設置尺寸
dialog.setBounds(300, 100, 500, 450);
//打開對話框
dialog.setVisible(true);
//獲取返回的絕對路徑
StringBuilder absolutePath=new StringBuilder();
absolutePath.append(dialog.getDirectory()=="null"?"null":dialog.getDirectory());
absolutePath.append(dialog.getFile()=="null"?"null":dialog.getFile());
//過濾信息
if(absolutePath.toString().contains("null")){
return "NO-Path";
}
return absolutePath.toString();
}
/**
* 終止程式
*/
private static void exitPrograming(){
System.exit(0);
}
/**
* 獲取圖片二進位數據 :[1024*1024*10]:10M
* @param imagePath 圖片絕對地址
* @return 返回二進位數據
*/
private static byte[] getImageBytes(String imagePath){
//二進位對象
byte[] b=new byte[1024*1024*10];
//創建圖片文件
File imageFile=new File(imagePath);
//圖片流對象
try {
FileInputStream fis=new FileInputStream(imageFile);
//寫入
fis.read(b);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return b!=null?b:null;
}
/**
* 通過圖片二進位數據 獲取ImageIcon對象
* @param b 二進位數據
* @return ImageIcon對象
*/
private static ImageIcon getImageIcon(byte[] b){
return new ImageIcon(b);
}
/**
* 通過圖片地址 獲取ImageIcon對象
* @param filename 圖片地址
* @return ImageIcon對象
*/
private static ImageIcon getImageIcon(String filename){
return new ImageIcon(filename);
}
/**
* 通過圖片地址對象 獲取ImageIcon對象
* @param location URL地址對象
* @return ImageIcon對象
*/
private static ImageIcon getImageIcon(URL location){
return new ImageIcon(location);
}
/**
* 通過圖片對象 獲取ImageIcon對象
* @param image Image地址對象
* @return ImageIcon對象
*/
private static ImageIcon getImageIcon(Image image){
return new ImageIcon(image);
}
/**
* 調整ImageIcon的尺寸
* @param icon Icon對象
* @param width 調整後的寬度
* @param height 調整後的高度
* @return
*/
private static ImageIcon imageSizeCorrect(ImageIcon icon,
int width,
int height){
Image images=icon.getImage();
images=images.getScaledInstance(width, height, Image.SCALE_DEFAULT );
return new ImageIcon(images);
}


/**
* 程式入口
* @param params
*/
public static void main(String[] params) {

String path=getLocalImageAbsolutePath();
System.out.println("打開地址:"+path);
MyImageIcon testImages=new MyImageIcon();
testImages.setBounds(200,100, 500, 500);
JLabel jLabel=new JLabel();
jLabel.setBounds(100,100, 300, 300);
jLabel.setIcon(imageSizeCorrect(MyImageIcon.getImageIcon(MyImageIcon.getImageBytes(path)),300,300));
testImages.add(jLabel);
testImages.setVisible(true);

//結束程式
MyImageIcon.exitPrograming();
}
}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 徒手使用python和go語言搭建最簡單的web頁面-使用模板,無持久化 也許我們會接觸到很多語言的web應用,譬如php,java,包括今天介紹的python和go,實際上我們在使用這些語言構建web應用的時候,很多時候變成了單純的調用包和api,而忽略底層的原理。不過呢,所有的web應用,模型都 ...
  • 異常是什麼,它是怎麼發生的?Java系統是怎麼處理的,和正常return有什麼區別?應用程式能如何處理?Throwable是什麼,它有哪些屬性和方法?Java都有哪些異常類,有什麼區別,為什麼要那麼多類?... ...
  • scalaz-stream是一個泛函數據流配件庫(functional stream combinator library),特別適用於函數式編程。scalar-stream是由一個以上各種狀態的Process串聯組成。stream代表一連串的元素,可能是自動產生或者由外部的源頭輸入,如:一連串滑鼠 ...
  • php中一個"異類"語法: $a && $b = $c; php中一個"異類"語法: $a && $b = $c; $a = 1;$b = 2;$c = 3;$a && $b = $c;echo "a:$a";echo "b:$b";echo "c:$c";這樣是a:1b:3c:3$a = 0;$b ...
  • eclispe中,點擊調試運行java項目,出現 cannot connect to VM 正常的運行項目,沒問題; 以為是jdk的安裝路徑等的問題,還有殺毒軟體等等,都沒有正常; 後來找到是winsock出問題了,運行cmd ,在命令行中執行 netsh winsock reset 再重啟機器,果 ...
  • ③最後將B上的1個圓盤移到C上。 ★★★有了代碼就好辦了★★★ 代碼奉上▼ 關於C++與Dev-C++的下載 ...
  • 後續補充更新 ...
  • 這篇文章是關於Java static關鍵字的使用,主要會介紹以下的內容: 1. static 的概念 2. static的各種應用 3. 總結 static 是什麼 static 顧名思義是靜態的意思。與this相對,static表示所修飾的部分是屬於類本身所有的,不依賴與某個具體的實例。 而thi ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...