图片和二进制流之间的转化

图片和二进制流之间的转化

1.图片—>二进制图像矩阵
  • 读取图片,并调节图片像素(如(256,256)).
  • 获取像素点的颜色(黑色:RGB(0,0,0))
  • 转化二进制流写入文件(黑色:1,其余:0)
from PIL import Image


im=Image.open('算法数据/t2.jpg')
im = im.resize((256, 256), Image.NEAREST) # 调节图片大小
r,g,b = im.split()
width,height=im.size
fh=open('2.txt','w')
for i in range(height):
    for j in range(width):  #获取像素点颜色 
        color=im.getpixel((j,i))
        colorsum=color
### 字节与二进制之间的关系 字节(Byte)由8个比特(bit)组成,每个比特可以是0或1。因此,一个字节能表示\(2^8\)种不同的状态,即从0到255的范围内的任何整数值[^2]。 ### 十进制至二进制换方法 对于十进制数向二进制数换: #### 整数部分 采用“除基取余法”,具体来说就是不断地用该基数去除要被换的数据,并记录每次相除后的余数作为结果的一部分;直到商变为零为止。最后把所有得到的余数倒序排列即可获得最终的结果。例如将十进制数`9`转化为二进制的过程如下所示: ```plaintext 9 ÷ 2 = 4 ... 1 4 ÷ 2 = 2 ... 0 2 ÷ 2 = 1 ... 0 1 ÷ 2 = 0 ... 1 ``` 所以,十进制数`9`对应的二进制形式为`1001`。 #### 小数部分 通过“乘基取整”的方式处理,即将小数部分不断乘以目标进制(这里是2),并取出其整数部分作为新产生的位值,直至达到所需精度或者遇到循环节为止。比如要把十进制的小数`.625`成二进制,则有: ```plaintext .625 × 2 = 1.25 -> 取1, 剩下的继续计算... .25 × 2 = .5 -> 取0, .5 × 2 = 1 -> 取1. ``` 故而得出结论:十进制小数`.625`等于二进制中的`.101`。 ### 二进制至十进制换方法 当需要将二进制数换回十进制时,可以通过按权展开求的方法来进行。所谓“权”指的是每一位上的权重,它取决于所在位置以及所处的进制体系。对于二进制而言,“权”是从右往左依次增加的幂次方序列\[2^{0}, 2^{1}, 2^{2}...\]。举例说明如何将二进制串`1011`变换成相应的十进制数值: \[ 1 \times 2^{3} + 0 \times 2^{2} + 1 \times 2^{1} + 1 \times 2^{0}=8+0+2+1=11 \] 这意味着二进制字符串`1011`对应于十进制数字`11`。 ### 实际应用案例 - C# 中实现图像到二进制流换 在某些编程场景下,可能涉及到文件的操作,如图片保存为数据库中的BLOB字段或是网络传输前压缩编码等动作,这时就需要考虑怎样有效地完成这类数据类型的互换工作。以下是利用C#语言编写的简单示例程序片段用于展示这一过程: ```csharp using System; using System.IO; public class ImageToBinaryConverter { public static byte[] ConvertImageToByteArray(string imagePath){ using (FileStream fs = new FileStream(imagePath FileMode.Open, FileAccess.Read)){ BinaryReader br = new BinaryReader(fs); return br.ReadBytes((int)fs.Length); // Read entire file into a byte array } } } ``` 上述代码展示了如何打开指定路径下的图片文件(`imagePath`)并通过`FileStream`类加载入内存中形成byte数组返回给调用者[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值