c#接收多个Byte数组,组成Byte数组,转成图片,中间出现丢失字节,如何保证图片完整性

问题描述

c#接收多个Byte数组,组成Byte数组,转成图片,中间出现丢失字节,如何保证图片完整性
c#接收多个Byte数组,组成Byte数组,转成图片Bitmap,中间出现丢失字节,如何保证图片完整性。

我目前做的是下位机与上位机通信,下位机采用GPRS传输图片到上位机,但是每次只能传输1K,
图片大于1K,分多次发送到上位机,当上位机与下位机通讯时,如果中间过程中导致其中一次传输不正确,上位机如何处理才能把图片正常显示出来。也就是说Byte数组转成图片(Bitmap)过程中,Byte数组中一部分丢失了。如何补充上,利用Bitmap转成图片时候显示正常。

解决方案

接收过程中要记录原始图片的长度.之后跟据长度计算数组中有效部分的长度.再换成图片.

解决方案二:
这个要计算出来那个部分的数据丢失了。可以根据周边的像素色彩值采用插值算法把数据重新补上。

时间: 2024-08-28 21:08:30

c#接收多个Byte数组,组成Byte数组,转成图片,中间出现丢失字节,如何保证图片完整性的相关文章

『0014』 - Solidity Types - 动态大小字节数组(Dynamically-sized byte array)

孔壹学院:国内区块链职业教育领先品牌 作者:黎跃春,区块链.高可用架构工程师 微信:liyc1215 QQ群:348924182 博客:http://liyuechun.org 一.Dynamically-sized byte array string 是一个动态尺寸的UTF-8编码字符串,它其实是一个特殊的可变字节数组,string是引用类型,而非值类型. bytes 动态字节数组,引用类型. 根据经验,在我们不确定字节数据大小的情况下,我们可以使用string或者bytes,而如果我们清楚的

请教高手:new String(byte).getBytes() 与 byte.clone() 得到的Byte有啥区别

问题描述 在做加密解密时发现将加密后的Byte转成String后再转回Byte 不能正常解密抛出 javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher直接用原加密Byte解密或者Byte.clone()解密正常有谁遇见过这种问题吗是什么原因 解决方案 字符串加密之后得到的二进制串通常意义上已经不是正常的字符串了,如果再编码成字符串的

as-AS3中的读取字节数组代码,怎么转成C#

问题描述 AS3中的读取字节数组代码,怎么转成C# var bytes:ByteArray=new ByteArray(); bytes.writeInt(10); bytes.writeUTF("123"); //AS3中使用下面两句可以读取了明文 trace(bytes.readInt()); trace(bytes.readUTF()); 用C#代码要怎么读出来??上面两句 解决方案 byte[] data = File.ReadAllBytes("x:xxx.bin&

C++指针数组、数组指针、数组名及二维数组技巧汇总_C 语言

本文较为详细的分析了关于理解C++指针数组,数组指针,数组名,二维数组的一些技巧.是比较重要的概念,相信对于大家的C++程序设计有一定的帮助作用. 一.关于数组名 假设有数组: int a[3] = {1, 2, 3} 1.数组名代表数组第一个元素的地址,注意,不是数组地址(虽然值相等),是数组第一个元素地址,a 等同于 &a[0]; a+1是第二个元素的地址.比第一个元素地址a(或者&a[0])超出了一个整型指针的大小,在这里是4个字节(byte) cout << a <

VS2013下动态数组二维数组读二进制文件的问题

问题描述 VS2013下动态数组二维数组读二进制文件的问题 int samples_to_read = 7200; uint8_t **caculate_a; int count2,count3; caculate_a = (uint8_t **)malloc(sizeof(uint8_t *)* 3); for (count1 = 0; count1<3; count1++){ //动态数组分配空间 caculate_a[count1] = (uint8_t *)malloc(sizeof(u

C#数组的属性、foreach遍历、交错数组与矩形数组的区别

本次课我们要学习数组的属性.foreach的用法.我上节课提到的交错数组,我会通过多个例子的演示讲解让你们理解交错数组定义已经与 规则的二维数组(矩形数组)的区别加深理解,下一节我们还将学习数组的常用方法. 下面我们来学习一下数组的属性,什么是属性呢?在 以后学习类的时候我会给大家详细的讲解,现在我给你们举个现实生活的例子,帮助你们理解什么叫属性,属性一般都是名词,表示它的所有 者(即对象)拥有的特性,如抹布(对象)的颜色.大小(属性),而下一节将学习的数组的方法一般是动词,如抹布的功能,抹布(

(教学思路 C#数组二)数组的属性、foreach遍历、交错数组与矩形数组的区别

本次课我们要学习数组的属性.foreach的用法.我上节课提到的交错数组,我会通过多个例子的演示讲解让你们理解交错数组定义已经与规则的二维数组(矩形数组)的区别加深理解,下一节我们还将学习数组的常用方法. 下面我们来学习一下数组的属性,什么是属性呢?在以后学习类的时候我会给大家详细的讲解,现在我给你们举个现实生活的例子,帮助你们理解什么叫属性,属性一般都是名词,表示它的所有者(即对象)拥有的特性,如抹布(对象)的颜色.大小(属性),而下一节将学习的数组的方法一般是动词,如抹布的功能,抹布(对象)

认识C#数组,了解数组类型、学习定义及初始化

以下是我在给学生讲解数组时采用的ppt的大纲内容(粗体),由于本人知识上的欠缺,可能在很多知识点上把握不准,所以我会把我要给 学生讲解的语句(不加粗)同时写出,希望有路过我这份教案的人给予指点,如何能够给可能只有c语言基础知识的学生讲解清楚,同时让他们 理解其实际项目中的用法. 一:我们来认识数组,了解数组类型.学习定义及初始化 数组是同一数据类型的一组值 首先我 们将介绍几个概念有助于你们理解数组.数组是一种具有相同类型和名称的变量的集合,如一组整数.一组字符等.组成数组的这些变量被称 为数组

C语言中全局数组和局部数组的问题

 今天同学遇到一个在C语言中全局数组和局部数组的问题,卡了许久,我也没有第一时间看出问题,现在把问题梳理一下,并给出解决方案. 问题描述: 在全局声明的数组与在局部声明的数组有着不同的效果. 首先来看一个程序: 代码如下: #include <stdio.h> #include <stdlib.h> #define MAX 10 char a[MAX]; int main() { int i; char b[MAX]; char *c=(char *)malloc(MAX * si