数据库unsigned char*类型图片存进

loadimage1();测试:

void Caccess_test_1Dlg::loadimage1()//存入unsigned char*类型的数据图片
{
    CFileException e;
    Invalidate();
    //输入图片测试
    CString sFilePathName = L"D:\\bridge.bmp";
    m_Pic.Load(sFilePathName);

    BOOL bResult = FALSE;
    CFile f;
    //int    nSize = 0;
    if (m_Pic.m_IPicture != NULL) m_Pic.FreePictureData(); // Important - Avoid Leaks...

    if (f.Open(sFilePathName, CFile::modeRead | CFile::typeBinary, &e)) //打开该文件
    {
        //int nSize = f.GetLength();          //先得到文件长度
        BYTE * pBuffer = new BYTE[nSize];  //按文件的大小在堆上申请一块内存
        if (f.Read(pBuffer, nSize) > 0)    //把jpg文件读到pBuffer(堆上申请一块内存)
        {   // +----------------------------------------------
            BYTE *pBuf = pBuffer;     ///下面这一大段是把pBuffer里的jpg数据放到库中
            VARIANT            varBLOB;
            SAFEARRAY        *psa;
            SAFEARRAYBOUND    rgsabound[1];
            if (pBuf)
            {
                rgsabound[0].lLbound = 0;
                rgsabound[0].cElements = nSize;
                psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
                for (long i = 0; i < (long)nSize; i++)
                    SafeArrayPutElement(psa, &i, pBuf++);
                varBLOB.vt = VT_ARRAY | VT_UI1;
                varBLOB.parray = psa;
                m_pRecordset->GetFields()->GetItem("偏振度图像")->AppendChunk(varBLOB);
            }
            (m_Pic.LoadPictureData(pBuffer, nSize));//接作调用函数读pBuffer的jpg数据准备显示
            delete[] pBuffer;     //删掉堆上申请的那一块内存
            pBuf = 0;                //以防二次乱用
        }
        f.Close();
        showimage1();
    }
}

selectdata为查询输出的图片数据。

但是以ID索引查找时会一下子显示好多图,1、3、4、5

而以确定的时间查找时不会出错

时间: 2024-10-11 18:08:28

数据库unsigned char*类型图片存进的相关文章

unsigned char 类型

在蓝牙4.0的开发中,很多数据类型都用到了 unsigned char ,我觉得用这个类型的一个原因是相比较于整型,它占的空间更少. 比如: unsigned char a = 1;  // 占1个字节 int a = 1;    // 占2个字节 --------------------------------------separation-------------------------------------------- 值得注意的是,类型之间的计算要理清.对于 unsigned ch

【c语言】实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变

// 实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char position, int flag) { unsigned c; unsigned char a = 1; a = a << (position - 1); if (flag == 1) { *p_data = *p_dat

图片存进Mat类中,然后调用图像矩阵元素

Mat img = imread("test3.png",0);//灰度图 imwrite("origin.png",img); if(img.empty()) { cout << "图像加载失败!" << endl; //system("pause"); return -1; }; std::cout<<(float)img.at<uchar>(1,1)<< std

C语言 —— 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main() 4 { 5 int a = 12345; 6 char *q = (char *)(&a); 7 for(int i = 0; i < sizeof(a); ++i) 8 printf("%.2x ", q[i]); 9 return 0; 10 } 输出为: a的地址

char与unsigned char 区别

char 与 unsigned char的本质区别 http://bbs.csdn.net/topics/270080484 同一个内存内容:10010000 你用char*   解释是-112 你用unsigned   char*   解释是144 还是同样这个内存内容赋给整型值,用unsigned   char   类型还是会得到144,用char类型的就会是负数. 真正的差别还是取决于你的程序.某些情况这两种类型表示都行. 补充一下: char 可能是signed char,也可能是uns

char与unsigned char 差别

char 与 unsigned char的本质差别 http://bbs.csdn.net/topics/270080484 同一个内存内容:10010000 你用char*   解释是-112 你用unsigned   char*   解释是144 还是相同这个内存内容赋给整型值,用unsigned   char   类型还是会得到144,用char类型的就会是负数. 真正的区别还是取决于你的程序.某些情况这两种类型表示都行. 补充一下: char 可能是signed char,也可能是uns

c语言中 char* 和 unsigned char* 的区别浅析(转)

原文:https://blog.csdn.net/guotianqing/article/details/77341657 背景最近在项目中遇到了一个编译警告,是因为定义的变量为char[],而在使用时作为函数的unsigned char*类型的参数调用.这个警告很容易避免,但是char*和unsigned char*到底有什么区别呢,本文作一个简单的探讨. char 和 unsigned char 的区别在C中,默认的基础数据类型均为signed,如定义变量为int,long等,都为有符号的.

C语言中char和unsigned char的区别

在C中,默认的基础数据类型均为signed,如定义变量为int,long等,都为有符号的.如果要定义无符号类型,必须显式地在变量类型前加unsigned. char在我所用的linux中一般都是8位一个字节,表示范围为-128~127. unsigned char的表示范围为0~255. 而ASCII的最大值是127.因此我们如果使用char去表示字符,那么char和unsigned char是没有区别的. 当然如果去表示超过127的数,那么就会差别的. 但是看过别人的一个博客,里面有指出,把一

数据库中char与varchar类型的区别

在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varchar,总结一下它们两者的区别,明确一下两者的区别. 1.char的长度是不可变的,而varchar的长度是可变的.也就是说,定义一个char[10]和varchar[10],如果存进去的是'abcd',那么char所占的长度依然为10,除了字符'abcd'外,后面跟六个空格,而varchar就立马把长度变为4了;取数据的时候,char类型的要用trim()去掉多余的空格,而v