ColorUtil颜色工具类(RGB&十六进制)

        今天终于将某个ZF项目的任务清完了,然后继续搞我的图片重命名加水印导出功能。简单点就是图片名字重命名然后上面加上水印嘛,可以自定义颜色啊,透明度啊,字体啊,水印位置啥的。这是我做的第三个比较多东西的功能吧。第一个是公告消息(包括消息推送和文件上传后预览功能),第二个是做的定位控件(PC端加手机端),第三个就是这玩意了。其实网上已经有很多图片加水印的例子了。我这里就不弄出来了。

但是,由于我前端的颜色选择器用的是jQuery-Color-Picker,所以保存到数据库的颜色都是十六进制的,例如:#ff0。而图片添加水印的颜色是用到Color类的,所以我们需要将它转换一下。

正常来说十六进制的颜色应该是#然后后面加上6个东西(数字或者字母),为什么我上面的是#加上三个呢,所以这里需要注意一下了,这是缩写,原本的是#ffff00的,所以可以进行缩写。我之所以讲到这个,因为我们RGB和十六进制转换的时候,十六进制不能缩写。

下面直接上工具类的代码:

/**
 * 颜色转换工具类(RGB<->十六进制)
 * @author Howinfun
 *
 */
public class ColorUtil {
		/**
		 * Color对象转换成十六进制字符串
		 * @param color Color对象
		 * @return 16进制颜色字符串
		 * */
		private static String toHexFromColor(Color color){
			String r,g,b;
			StringBuilder su = new StringBuilder();
			r = Integer.toHexString(color.getRed());
			g = Integer.toHexString(color.getGreen());
			b = Integer.toHexString(color.getBlue());
			r = r.length() == 1 ? "0" + r : r;
			g = g.length() ==1 ? "0" +g : g;
			b = b.length() == 1 ? "0" + b : b;
			r = r.toUpperCase();
			g = g.toUpperCase();
			b = b.toUpperCase();
			//su.append("0xFF");
			su.append("#");
			su.append(r);
			su.append(g);
			su.append(b);
			//#0000FF
			return su.toString();
		}
		/**
		 * 十六进制字符串转换成Color对象
		 * @param colorStr 16进制颜色字符串
		 * @return Color对象
		 * */
		public static Color toColorFromString(String colorStr){
			int length = colorStr.length();
			//需要处理一下那些缩写的,例如#ff0,我们要将他转为#ffff00
			if(length <= 4){
				char c1 = colorStr.charAt(1);
				char c2 = colorStr.charAt(2);
				char c3 = colorStr.charAt(3);
				colorStr = "#"+c1+c1+c2+c2+c3+c3;
			}
			String str1 = colorStr.substring(1, 3);
			String str2 = colorStr.substring(3, 5);
			String str3 = colorStr.substring(5, 7);
			int red = Integer.parseInt(str1, 16);
			int green = Integer.parseInt(str2, 16);
			int blue = Integer.parseInt(str3, 16);
			Color color =  new Color(red,green,blue) ;
			//java.awt.Color[r=0,g=0,b=255]
			return color;
		}
		
		public static void main(String[] args) {
			String colorStr = "#ff0";
			Color color =  toColorFromString(colorStr) ;
			System.out.println(color);
		}
}

猜你喜欢

转载自blog.csdn.net/Howinfun/article/details/81287802
今日推荐