精华内容
下载资源
问答
  • 本工具是因很多网站客户的要求而制作,主要是方便将存放于Access数据库中的二进制图片转换成JPG格式,并批量导出到硬盘中。 广告:本人提供商业版和工业版的进销存贴牌加工(OEM)服务
  • 二进制图片转换成BMP位图(C++)

    千次阅读 2017-11-03 10:41:19
    //一个586*586的二进制图片 const int height = 586; const int width = 586; //新生产bmp图片数据块总大小 (bmpWidth *biBitCount/8+3)/4*4*bmpHeight; const int size = 588 *586 ; // Part.1 C


    void saveBitmap()  

    {  

    //一个586*586的二进制图片

    const int height = 586;
    const int width = 586;

    //新生产bmp图片数据块总大小 (bmpWidth *biBitCount/8+3)/4*4*bmpHeight;
    const int size = 588 *586 ;


    // Part.1 Create Bitmap File Header  
    BITMAPFILEHEADER fileHeader;  


    fileHeader.bfType = 0x4D42;  
    fileHeader.bfReserved1 = 0;  
    fileHeader.bfReserved2 = 0;  


    fileHeader.bfSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + size + 256 * sizeof(RGBQUAD);  
    fileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD);


    // Part.2 Create Bitmap Info Header  
    BITMAPINFOHEADER bitmapHeader = { 0 };  


    bitmapHeader.biSize = sizeof(BITMAPINFOHEADER);  
    bitmapHeader.biHeight = height;  
    bitmapHeader.biWidth = width;  
    bitmapHeader.biPlanes = 1;  
    bitmapHeader.biBitCount =8;
    bitmapHeader.biSizeImage = 0;  
    bitmapHeader.biXPelsPerMeter = 0;
    bitmapHeader.biYPelsPerMeter = 0;
    bitmapHeader.biClrUsed = 256;
    bitmapHeader.biClrImportant = 0;
    bitmapHeader.biCompression = 0;


    int pad;
    int biWidth = 0;
    int padWidth = 0 ;


    if(bitmapHeader.biBitCount==24)
    pad = 4 - ((bitmapHeader.biWidth * 3) % 4);
    else
    pad = 4 - ((bitmapHeader.biWidth) % 4);
    if (pad == 4)      
    pad = 0;           
    padWidth = bitmapHeader.biWidth + pad;


    RGBQUAD* pRgbQuards=new RGBQUAD[256]; 
    for(int i=0;i<256;i++) 

    pRgbQuards[i].rgbBlue=i; 
    pRgbQuards[i].rgbRed=i; 
    pRgbQuards[i].rgbGreen=i; 



    int filesize = files.size();
    for (int i= 0;i <filesize; i++)
    {
    FILE *imgp;
    string filename = files[i];
    fopen_s(&imgp,filename.data(),"rb");


    if (imgp == NULL)
    {
    return ;
    }
    BYTE *bits = (BYTE *)malloc(586*586);
    BYTE *bits0 = (BYTE *)malloc(1); 
    BYTE *bits1 = (BYTE *)malloc(1); 
    BYTE *bits2 = (BYTE *)malloc(1); 
    BYTE *bits3 = (BYTE *)malloc(586*586);


    for (int j = 0; j<586*586;j++)
    {
    memset(bits1, 0xFF, 1); 
    memset(bits2, 0xFF, 1); 
    fread(bits1,sizeof(char),1,imgp);
    fread(bits2,sizeof(char),1,imgp);
    bits3[j] = (((*bits1)<<6)| ((*bits2 )>>2));

    fclose(imgp);


    string Bmpfilename = filename.substr(0,filename.length()- 3) + "bmp";


    FILE *output = fopen(Bmpfilename.data(), "wb");  
    if (output == NULL)  
    {  
    printf("Cannot open file!\n");  
    }  
    else  
    {  
    fwrite(&fileHeader,1,sizeof(BITMAPFILEHEADER),output);  
    fwrite(&bitmapHeader,1,sizeof(BITMAPINFOHEADER),output);  
    fwrite(pRgbQuards,sizeof(RGBQUAD),256,output); 
    //fwrite(outbfr,sizeof(BYTE),586*586,output);
    char *by = "0x00"; 
    for (int n= 586; n >0 ; n--)
    {
    for (int m = 0;m < 586; m++)
    {
    bits0[0] =bits3[(n-1)*586 +m];
    fwrite(bits0,sizeof(BYTE),1,output);
    }
    for(int i = 1; i <= pad; i++)
    {
    fwrite(by,sizeof(BYTE),1,output);
    }
    }
    }
    fclose(output);
    free(bits); 
    free(bits0); 
    free(bits1); 
    free(bits2); 
    free(bits3); 
    bits = NULL;
    bits0= NULL;
    bits1 = NULL;
    bits2 = NULL;
    bits3 = NULL;


    string Pngfilename = filename.substr(0,filename.length()- 3) + "png";

    LPCWSTR  Bmpname = stringToLPCWSTR(Bmpfilename);
    LPCWSTR  Pngname = stringToLPCWSTR(Pngfilename);

    //将BMP图片转换成PNG图片  详见下一篇博文
    BMptoPNG(Bmpname,Pngname);  
    DeleteFile(Bmpname);
    }
    }
    展开全文
  • 主要介绍了C#实现把图片转换二进制以及把二进制转换成图片的方法,结合具体实例形式分析了基于C#的图片与二进制相互转换以及图片保存到数据库的相关操作技巧,需要的朋友可以参考下
  • 描述二进制转换图片的方法
  • //类方法 图片 转换二进制 +(NSData *)Image_TransForm_Data:(UIImage *)image { NSData *imageData = UIImageJPEGRepresentation(image , 0.5); //几乎是按0.5图片大小就降到原来的一半 比如这里 24KB 降到11...
    //类方法  图片 转换为二进制
    +(NSData *)Image_TransForm_Data:(UIImage *)image
    {
        NSData *imageData = UIImageJPEGRepresentation(image , 0.5);
    //几乎是按0.5图片大小就降到原来的一半 比如这里 24KB 降到11KB return imageData; } //调用方法举例 -(void)viewWillAppear:(BOOL)animated { [self Read_ImageData]; } - (void)viewDidLoad { nav_View=[[NavView alloc]init]; [self.view addSubview: [nav_View NavView_Title:@"通告"]]; [super viewDidLoad]; [self Read_ImageData]; } //以下方法 就是把一图片压缩成二进制 再转换成图片做显示 效果 不错 -(void)Read_ImageData { UIImageView *imageView1=[[UIImageView alloc]initWithFrame:CGRectMake(0, 80, 200, 200)]; imageView1.image=[UIImage imageNamed:@"cat_food.png"]; [self.view addSubview:imageView1]; UIImageView *imageView3=[[UIImageView alloc]initWithFrame:CGRectMake(0, 280, 200, 200)]; imageView3.image=[UIImage imageWithData:[Function Image_TransForm_Data:imageView1.image] ]; [self.view addSubview:imageView3]; NSData *data = [NSData dataWithData:[Function Image_TransForm_Data:imageView1.image ]]; [data writeToFile:[Function CreateTheFolder_From:Library_Cache FileHolderName:MyFolder FileName:@"pp111111.png"] atomically:YES]; }

    效果图:如下

    能看到一点被压缩质量的细节是不是 还好哈哈

    转载于:https://www.cnblogs.com/someonelikeyou/p/3799333.html

    展开全文
  • 图片二进制转换,在将二进制转回图片
  • php处理二进制文件转换成图片格式 流程如下: 传送接收前端二进制文件后台服务端把二进制文件...这里主要说第二种二进制图片的问题 按照正常逻辑,只需要通过下面代码就可以进行转换 //<?php //PHP 7版本已经...

    php处理二进制文件转换成图片格式

    流程如下:

    传送
    接收
    前端二进制文件
    后台服务端
    把二进制文件保存在本地,以图片格式

    问题:如何将接收的二进制文件保存成图片格式呢?

    介绍前端的两张图片传输方法

    1. 通过from表单提交(ps:使用postman演示)
      在这里插入图片描述
    2. 通过二进制流文件
      在这里插入图片描述

    这里主要说第二种二进制图片的问题

    按照正常逻辑,只需要通过下面代码就可以进行转换

    //<?php
    	//PHP 7版本已经废弃 $data = $GLOBALS['HTTP_RAW_POST_DATA']; 
    	$data = file_get_contents("php://input"); //所以我们使用这种格式,照样可以获取二进制原始数据
    	if ($data) {
    		$url = 'images/' . time() . '.png'; //自己自定义的图片要保存的路径
    		file_put_contents($url, $file, true);//使用函数file_put_contents()进行重新写入文件,与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
    		return $url;  //这个就是你要保存的图片格式文件
    	}
    

    如果是面对前端传的是由base64编码而成的二进制文件,就还需要进行截图后解码才能得到正常的图片格式,如果不进行截取解码,得到的文件还是原来的二进制文件哦。

    在这里插入图片描述

    //<?php
    	$data = base64_decode(substr(file_get_contents('php://input'), strpos(file_get_contents('php://input'), ',')));
    	if ($data) {
    		$url = 'images/' . time() . '.png'; 
    		file_put_contents($url, $file, true);
    		return $url;  //这个就是你要保存的图片格式文件
    	}
    

    总结:

    主要看二进制是以什么格式进行编码或者没有编码, 如果有编码在根据编码的格式进行解码,像base编码要除去开头添加的类型等等字符串!

    ps:本人纯属Rookie,如果有什么说明不对的地方,请大神们指点!

    展开全文
  • 二进制文件转换

    2014-02-20 17:52:20
    二进制文件转换: 双击点开,把图片直接拖到期界面上,自动生成二进制文件(.h)。
  • 请问将图片怎么转换二进制数据啊?然后保存,然后在将数据从文件中读取出来显示为图片
  • python二进制图片转换

    千次阅读 2019-12-22 11:10:32
    python二进制图片转换 之前做项目,发现很多图片都是存储成二进制的形式,比如存储为.bin .dat等文件,如果你直接用记事本打开文件,会发现里面内容如下: 0005 0000 0000 0000 0000 0000 0000 0000 0000 0000 ...

    python二进制和图片转换

    之前做项目,发现很多图片都是存储成二进制的形式,比如存储为.bin .dat等文件,如果你直接用记事本打开文件,会发现里面内容如下:

    0005 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0000 0001 0000 0000 0000 0000 0000 0000
    

    这就说明是把图片转为了二进制字节流保存了起来,你需要通过代码将其转换成图片,下面我就给出转换的方法。

    图片转二进制流

    图片如果使用opencv读取出来,本质就是一个numpy,所以直接利用numpy的tofile即可将其保存成二进制流。

    
    def save2bin_1():
        a = cv.imread("test.png")
        a.tofile("test.dat")
    
    

    当然你也可以直接以wb的方式打开一个文件,然后把数据写进去即可。

    def save2bin_2():
        a = cv.imread("test.png")
        with open("test1.dat","wb") as f:
            f.write(a)
    

    二者本质是一样的,所以.dat里面的数据也是一样的。

    这里有一点需要提的是,我们将数据写入dat里面后,其实不是一个numpy数组了,而变成了一个字节流,所以我们以第二种方式保存的话,我们还能够在字节流后面继续加入数据,比如:

    def save2bin_2():
        a = cv.imread("test.png")
        with open("test1.dat","wb") as f:
            f.write(a)
            f.write(np.array([1],np.uint8))
    

    一定要注意是uint8,因为这样以后解析的话,可以都按照每个数据都是一个字节。上面的代码其实相当于保存了一个图片和一个label。

    当然如果也可以通过先把np展平,然后再增加一个1,这样保存一张图片和一个label:

    
    def save2bin_2():
        a = cv.imread("test.png")
        a = a.flatten()
        a = np.append(a,1).astype(np.uint8)
        with open("test1.dat","wb") as f:
            f.write(a)
    
    

    读取二进制流转为图片

    numpy有tofile的方法,同样也有fromfile的方法,所有可以直接使用如下代码读:

    def load_1():
        data = np.fromfile("test.dat",np.uint8).reshape(332,297,3)
        cv.imshow("a",data)
        cv.waitKey(0)
    
    

    这里有两个小细节要注意,第一个是数据类型一定要是np.uint8,这样才能按照一个数据一个字节解析,第二个是一定要reshape,因为之前说过我们保存之后其实变成字节流了,你其实可以看作是一个字符串/list类似的东西,你可以打印一下看看print(np.fromfile("test.dat",np.uint8).shape),会发现其是一个一维的数据,相当于我们保存的时候,tofile把数据自动展平了,所以我们加载的时候要reshape。

    除了直接用tofile方法,你可以用rb的方式打开这个文件,然后读取即可。

    def load_2():
        f = open("test.dat","rb")
        d = f.read()
        tmp_a = []
        for i in d:
            tmp_a.append(i)
        tmp_a = np.array(tmp_a,dtype=np.uint8)
        cv.imshow("a",tmp_a.reshape(332,297,3))
        cv.waitKey(0)
    
    

    这个代码就更能体现字节流的概念了,通过d = f.read(),我们将数据存到了d中,我们可以直接将d输出,你会发现是这种格式的数据b'\xff\xff\xff\xff\xff...,前面的b就代表了是字节,你可以输出d的类型,是<class 'bytes'>,我们如果想要取字节流里面的一个个数据,则需要遍历一遍,把每个字节都存起来存到tmp_a里面,这样就自动转成了int,所以tmp_a里面是这样的数据[255, 255, 255,...]就是一个普通的list,之后我们将其转成numpy并reshape即可。

    了int,所以tmp_a里面是这样的数据[255, 255, 255,...]就是一个普通的list,之后我们将其转成numpy并reshape即可。

    展开全文
  • 图片二进制转换

    2018-08-31 17:55:39
    图片二进制代码工具类。
  • 本文转载出自于:... 把图片转换二进制--把二进制转换成图片 private void button1_Click(object sender, EventArgs e) { string path = this....
  • 今天搜了下,flex 显示二进制图片。大部分都是重写了一个类。个人用了下,未成功啊。。。 然后搜英文的。终于成功了,非常简单的几行代码: 显示二进制图片:img.source = byteData;//img 是Image控件的ID ,byte...
  • 功能介绍:第“一”解决的是js代码实现file控件浏览图片显示到img,单击保存第“二”实现把file控件浏览到的图片转成二进制格式保存到数据库,第“三”实现从数据库读出二进制图片显示到页面img控件;一 、 js...
  • java图片二进制相互转换 package mytest; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io....
  • 主要介绍了php图片二进制转换实现方法,详细介绍了图片二进制之间转换的原理与实现技巧,非常具有实用价值,需要的朋友可以参考下
  • 存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: public byte[] GetPictureData(string imagepath) { /**/////根据...
  • getCode() { axios({ method: "get", url: "admin/verify", responseType: "arraybuffer", // 最为关键 }).then((res)=> { ... }, 登录验证码后端返回的二进制 进行如上操作 得到的imgUrl 直接放到img标签里面就可以了
  • * 将图片转换二进制 * @return */ static String getImageBinary(){ File f = new File("D:/ASC1.jpg" ); BufferedImage bi; try { bi = ImageIO.read(f); ByteArrayOutputStream baos = new ...
  • vs2010,c++,将二进制流的图片转换成bmp图片,再转换成png图片
  • 我要将数据库存储的二进制转换成为图片,现在二进制已经拿到了,要怎么转换? MemoryStream ms = new MemoryStream(rt); Image img = Image.FromStream(ms);
  • cifar10图片格式及将二进制文件转换成jpg的python程序
  • 图片二进制转换

    2015-03-11 17:10:25
    用于将图片装换为二进制,在一些单片机显示的编程上可能能够方便的取得图片二进制模型。
  • 图片二进制互相转换C#

    千次阅读 2013-05-31 10:56:28
    图片二进制互相转换C#   图片的常见存储与读取凡是有以下几种: 存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回...
  • php接收二进制文件转换图片

    千次阅读 2017-07-13 15:00:30
    PHP接收二进制文件转换图片,php://input $GLOBALS['HTTP_RAW_POST_DATA'] 最近在做Flash在线裁剪图片 生成图片的东西。 通过Flash POST 图片二进制数据给php,由php生成图片保存。 开始想到用$_POST来接受。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 104,543
精华内容 41,817
关键字:

二进制图片转换