rgba与十六进制的相互转换,以及rgba的校验

RGBA与十六进制颜色值的互换及校验
本文介绍了如何进行RGBA颜色值与十六进制颜色值之间的转换,并提供了RGBA格式正确性的正则检测方法。无论是从RGBA转换到十六进制,还是反过来,都是颜色处理中常见的需求。同时,正确校验RGBA格式对于确保颜色数据的准确性至关重要。

1、将rgba颜色值转换为十六进制(rgb转十六进制同理)

RGBToHex(rgba){
	let str = rgba.slice(5,rgba.length - 1),
		arry = str.split(','),
		opa = Number(arry[3].trim())*100,
		strHex = "#",
		r = Number(arry[0].trim()),
		g = Number(arry[1].trim()),
		b = Number(arry[2].trim());
	
	strHex += ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
    
    return {color:strHex,opacity:opa};
}

2、将十六进制颜色值转换为rgba(十六进制转rgb同理)

HexToRGB(color,opacity){
	let newColor = 'rgba(';

	//判断是三位还是六位
	if(color.length === 4){
		let arry = [];

		for(let i = 1;i < color.length;i++){
			arry.push(parseInt("0x" + color[i] + color[i]));
		}

		arry.forEach(function(item){
			newColor += item + ', ';
		});
		newColor += opacity/100 + ')';

		return newColor;
	}else{
		let arry = [];

		for(let i = 1;i < color.length;i += 2){
			arry.push(parseInt("0x" + color.slice(i,i+2)));
		}

		arry.forEach(function(item){
			newColor += item + ', ';
		});
		newColor += opacity/100 + ')';

		return newColor;
	}
}

3、正则检测rgba格式是否正确(检测rgb同理)

checkRGBA(rgba){
	let str = rgba.slice(5,rgba.length - 1),
    	arry = str.split(','),
    	status = true,
		reg = /^rgba\(\d{1,3}(\,\s{0,1}\d{1,3}){2}\,\s{0,1}(0|(0(\.\d{1,2}))|1)\)$/;
	
	arry.forEach(function(item,index){
		if(index == arry.length - 1){
			if(Number(item.trim()) < 0 || Number(item.trim()) > 1){
				status = false;
			}
		}else{
			if(Number(item.trim()) < 0 || Number(item.trim()) > 255){
				status = false;
			}
		}
	});
	
	if(reg.test(rgba) && status){
		return true;
	}else{
		return false;
	}
}
怎么把十六进制转换成图片? 回答 将十六进制数据转换为图片的实现方法 要将十六进制数据解析并生成图片文件,通常需要以下几个核心步骤: 读取十六进制数据:通过编程语言或工具加载原始十六进制数据。 解码十六进制数据:将十六进制字符串化为字节流或其他适合图像处理的数据形式。 构建图像对象:利用图像库(如 Python 的 PIL/Pillow 库),创建一个空白图像并将像素数据填充到其中。 保存为图片文件:将构建好的图像对象保存为指定格式的图片文件。 以下是基于 Python 编程语言的具体实现方式2: 实现代码示例 Python from PIL import Image import numpy as np def hex_to_image(hex_data, width=None, height=None): """ 将十六进制数据转换为图片。 参数: hex_data (str): 输入的十六进制字符串。 width (int): 图片宽度。如果不指定,则自动计算。 height (int): 图片高度。如果不指定,则自动计算。 返回: Image.Image: 转换后的图片对象。 """ # 移除可能存在的 '0x' 前缀 if hex_data.startswith('0x'): hex_data = hex_data[2:] # 将十六进制字符串为字节数组 byte_array = bytes.fromhex(hex_data) # 如果未指定宽高,则尝试推断 total_pixels = len(byte_array) // 3 # RGB 数据每三个字节表示一个像素 if not width or not height: sqrt_val = int(total_pixels ** 0.5) width = height = sqrt_val # 创建 NumP
最新发布
04-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值