网上流传的图片管理类ImageShop

        原理将RCP应用使用图片放在一个特定的目录,在加载时加载在同时使用ImageRegistry对图片的进行管理。

 

代码如下:

 

package com.unutrip.plugin.dev.commons;

import java.io.File;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;

import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Bundle;

import com.unutrip.plugin.dev.Activator;
/**
 * 网上流传的图片管理类
 * 每个UI程序都离不开图片,一般的Eclipse插件,在一个类中定义了若干静态常量,每一个常量指定一个icon的名字,
 * 在程序中用到图片的时候,通过这个常量计算得到图片。Eclipse的插件一般规模较大,图片很多,而且分不同的像素,
 * 彩色,灰白等。这样有利于统一的管理和开发人员的沟通。但并不是每个plugin或者rcp都要用到这么多图片,如果只
 * 有很少的图片的话,可以用图片的名字作为key,来存取图片。 所有的图片都放在根目录/icons目录下,在系统中如果
 * 用到名字为default.gif的图片,只要调用ImageShop.get (“default”)即可;有时在Action中需要用到
 * ImageDescriptor,调用ImageShop. getDescriptor(“default”)就可以取到。
 * 
 * @author longgangbai
 *
 */
public class ImageShop {
		         private static ImageRegistry register = new ImageRegistry();  
		    
		          private static Set keys = new HashSet();  
		          static {  
		                 initial();  
		           }  
		          public static ImageDescriptor getDescriptor(String key) {  
		                  ImageDescriptor image = register.getDescriptor(key);  
		                 if (image == null) {  
		                        image = ImageDescriptor.getMissingImageDescriptor();  
		                 }  
		                return image;  
		          }  
		         public static Image get(String key) {  
		                 Image image = register.get(key);  
		                 if (image == null) {  
		                        image = ImageDescriptor.getMissingImageDescriptor().createImage();  
		                 }  
		                 return image;  
		         }  
		          public static String[] getImageKey() {  
		                 return (String[]) keys.toArray(new String[keys.size()]);  
		         }  
		          private static void initial() {  
		                 Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);  
		                 URL url = bundle.getEntry("icons");  
		                 try {  
		                        url = Platform.asLocalURL(url);  
		                 } catch (Exception e) {  
		                	 e.printStackTrace();
		                 }  
		                 File file = new File(url.getPath());  
		                 File[] images = file.listFiles();  
		                 for (int i = 0; i < images.length; i++) {  
		                        File f = images[i];  
		                        if (!f.isFile()) {  
		                               continue;  
		                        }  
		                        String name = f.getName();  
		                        if (!name.endsWith(".gif")) {  
		                               continue;  
		                        }  
		                        String key = name.substring(0, name.indexOf('.'));  
		                        URL fullPathString = bundle.getEntry("icons/" + name);  
		                        ImageDescriptor des = ImageDescriptor.createFromURL(fullPathString);  
		                        register.put(key, des);  
		                        keys.add(key);  
		                 }  
		          }  
		   }  
		     

 

一直以来,很难找到一款体积小,能绿色执行,又功能丰富的图像处理软件,Imageshop 2.0的发布就是为了解决这个问题而存在的。 Imageshop2.0仍为单EXE文件,大小只有800多KB,对于目前任何移动设备来说这个大小都是小菜一碟。功能融合了常用图像处理各多个方面,能满足普通和专业用户在日常生活中调整图像的基本需求,对于熟悉PS的用户使用上更是得心应手。 在程序的界面上,完全模仿PS CS5,支持多图像处理,菜单和很多快捷键也按照PS做相同的设置。 在图像格式支持上,Imageshop2.0在很多方面都做到了第一。1:完备的BMP图像支持能力,能全面支持1到32位BMP的处理,并且能在尽量减少视觉损失的情况下,在各种位深之间进行转换,特别是16位图像,增加了连PS都不支持的抖动选项,能解决用户在将真彩色图像转换为高彩色时的失真问题。2、能支持多达25种图像的解析,其中不乏很多很专业的图像。3、在保存图像时支持多种该格式可用的选项,而不是像很多其他软件草草了事。   程序设有很多国内图像软件都没有专业的选区功能,对所作选区可以进行羽化、平滑、收缩等操作,满足高端用户的需求。 在图像调节上,Imageshop2.0在第一版的基础上做了大量的改进和增添,在用户体验上也进行了改进,是用户更改图像更为方便快捷有效。 滤镜方面,更是有了较大的变动,一是大幅提高了原有部分滤镜的执行速度,同时增加更多有创意的滤镜。 同时,软件还增添了很多新功能,这些功能无论是对于图像爱好者还是图像编程者都有一定的帮助。 当然,程序还有不完美的地方,我会不断的改进的,希望大家喜欢这款软件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值