精华内容
下载资源
问答
  • 基于FPGA芯片控制全彩LED大屏幕图像显示系统系统设计、电子技术,开发板制作交流
  • 行业资料-电子功用-大屏幕图像显示系统和电视接收机
  • 电信设备-基于大屏幕图像显示屏显示空情灾情预警信息的终端设备.zip
  • 把位图转换为点阵软件 用于点阵屏幕图像显示
  • 关键词:数字显示接口(DVI) 最小化传输差分信号(TMDS) 两路同步视频 双屏幕超宽显示在飞机座舱显示系统中,需要超宽式屏幕的大图像显示,这样可以灵活地实现图像的融合与分配,并且可以自由地实现分窗、镶嵌的...
  • 这是一款关于如何利用DVI实现双屏幕超宽图像显示,日常工作生活中可用于学习、参考、借鉴,喜欢如何利用...该文档为如何利用DVI实现双屏幕超宽图像显示,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以...
  • 怎样利用DVI实现双屏幕超宽图像显示.doc
  • 如何利用DVI实现双屏幕超宽图像显示.doc
  • 抓取屏幕图像并在视图窗口中显示 抓屏代码
  • 行业资料-电子功用-以反光片显示电子设备屏幕中图像的方法与图像显示装置.pdf
  • 从磁盘加载并在屏幕显示一幅图像显示的图片需要放在D盘并命名为111,格式为jpg。
  • 电信设备-用于在移动终端上显示屏幕图像的方法.zip
  • 4.3存图像显示

    2013-06-17 00:51:28
    图像显示4.3寸屏幕 生态门2 STM32
  • 本文从激光大屏幕显示中的光学振镜的工作特性曲线出发,详细地分析图像失真的原因,并进行了探讨.
  • opencv图像显示程序

    2013-07-19 20:48:42
    opencv图像显示程序。从磁盘加载并在屏幕上显示一幅图像的简单opencv程序.
  • 介绍了智能激光大屏幕显示系统图像输出的工作机理,通过对振镜扫描的工作原理及振镜偏转角与大屏幕上激光扫描点所对应的坐标关系的研究,探讨了消除振镜扫描图像失真的方法。
  • opengl读取并在屏幕显示24位bmp图像.doc
  • 在使用Bitmap进行位图读取和显示的时候需要注意在生成位图时,系统会根据不同的情况来缩小、放大图像。 当把图片放到drawable文件夹中时,160密度的模拟器显示图像有放大效果,240密度的模拟器显示原尺寸的图像。...

    在使用Bitmap进行位图读取和显示的时候需要注意在生成位图时,系统会根据不同的情况来缩小、放大图像。

    当把图片放到drawable文件夹中时,160密度的模拟器显示的图像有放大效果,240密度的模拟器显示原尺寸的图像。

    当把图片放到drawable-hdpi文件夹中时,160密度的模拟器显示出的图像有缩小效果,240密度的模拟器显示原尺寸的图像。

    当把图片放到drawable-mdpi文件夹中时,160密度的模拟器显示原尺寸的图像,240密度的模拟器显示放大的图像。

    当把图片放到drawable-ldpi文件夹中时,160、240密度的模拟器都显示放大的图片。

    由此可以看出,在使用Bitmap显示图像时,一般应放在drawable-hdpi文件夹中,这样可以根据屏幕的密度来调整图像大小,比如再做游戏时,大屏幕的与小屏幕的手机中,人物或物体应该有大小之分。

    如果想无论什么密度都显示出原尺寸的图像,则需要有如下几行代码进行设置:

     

     

    // Bitmap的配置参数
    BitmapFactory.Options opts = new BitmapFactory.Options();
    opts.inDensity = getResources().getDisplayMetrics().densityDpi;
    opts.inTargetDensity = getResources().getDisplayMetrics().densityDpi;

    // 以指定的参数创建Bitmap
    Bitmap girl = BitmapFactory.decodeResource(getResources(), R.drawable.girl, opts);

    展开全文
  • 获取屏幕图像数据

    千次阅读 2016-11-23 11:18:06
    获取屏幕图像的两种方法 一、 typedef struct __IOSurface *IOSurfaceRef; UIKIT_EXTERN CGImageRef UICreateCGImageFromIOSurface(IOSurfaceRef); - (void)takeScreenshotAndSaveToPhotosAlbum { ...

    获取屏幕图像的两种方法

    一、

    typedef struct __IOSurface *IOSurfaceRef;

    UIKIT_EXTERN CGImageRef UICreateCGImageFromIOSurface(IOSurfaceRef);

    - (void)takeScreenshotAndSaveToPhotosAlbum {

        IOSurfaceRef ioSurfaceRef = (__bridge IOSurfaceRef)([UIWindow performSelector:@selector(createScreenIOSurface)]);

        CGImageRef cgImageRef = UICreateCGImageFromIOSurface(ioSurfaceRef);

        UIImage *uiImage = [UIImage imageWithCGImage:cgImageRef];

        CFRelease(ioSurfaceRef);

        CGImageRelease(cgImageRef);

        UIImageWriteToSavedPhotosAlbum(uiImage, nil, nil, nil);

    }

    二、

    - (void)takeScreenshotAndSaveToPhotosAlbum {

        extern UIImage *_UICreateScreenUIImage();

        UIImage *screenshot = _UICreateScreenUIImage();

        UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil);

    }


    展开全文
  • plt 在屏幕的固定位置显示图像

    千次阅读 2019-06-06 16:41:54
    在调用matplotlib.pyplot库画图时,如何设置其在固定位置显示。how-do-you-set-the-absolute-position-of-figure-windows-with-matplotlib 其实问题在于你要搞清楚你的plt后端编译器的类型。有TkAgg,WXAgg,Qt5Agg等...

    在调用matplotlib.pyplot库画图时,如何设置其在固定位置显示。how-do-you-set-the-absolute-position-of-figure-windows-with-matplotlib

    其实问题在于你要搞清楚你的plt后端编译器的类型。有TkAgg,WXAgg,Qt5Agg等类型。怎么查看自己的后端编译器,可以这样

    import matplotlib
    import matplotlib.pyplot as plt
    backend = matplotlib.get_backend()
    print(backend)

    当类型为TkAgg时,可以这样写:

    import matplotlib
    import matplotlib.pyplot as plt
    from PIL import Image
    img = Image.open("00.jpg")
    fig = plt.figure()
    
    fig.canvas.manager.window.wm_geometry('+300+300')
    
    fig.imshow(img)
    
    fig.show()

    这是显示一张图片,但一般用固定窗口位置都是序列图像的显示

    当类型为WXAgg时,可以这样写:

    import matplotlib
    import matplotlib.pyplot as plt
    from PIL import Image
    img = Image.open("00.jpg")
    fig = plt.figure()
    
    
    fig.canvas.manager.window.SetPosition((300, 300))
    fig.imshow(img)
    
    fig.show()

    当类型为Qt5Agg时,可以这样写:

    import matplotlib
    import matplotlib.pyplot as plt
    from PIL import Image
    img = Image.open("00.jpg")
    fig = plt.figure()
    
    f.canvas.manager.window.move(300, 300)
    fig.imshow(img)
    
    fig.show()

    搞定~,因为看到一篇讲这个相关的博文,但是没有解决我的问题,就去论坛上看到了具体的解决办法。

    还有就是如何显示不带白边的plt图像

    plt.figure()
    fig.set_size_inches(2,2)#200x200
    fig.canvas.manager.window.move(300,300)
    plt.imshow('your img sequence array')
    plt.axis('off')
    plt.gca().xaxis.set_major_locator(plt.NullLocator())
    plt.gca().yaxis.set_major_locator(plt.NullLocator())
    plt.subplots_adjust(top=1,bottom=0,left=0,right=1,hspace=0,wspace=0)
    plt.margins(0,0)
    plt.pause(0.5)
    

    这样就可以连续固定位置显示图像了。

    展开全文
  • 远程控制编写之屏幕传输 MFC实现 屏幕截图 发送bmp数据 显示bmp图像: 一 : 首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_xiehonghao/article/details/37656281 二: 被控端的代码...

    之屏幕传输  MFC实现  屏幕截图 发送bmp数据 显示bmp图像:

    一 :

    首先要了解bmp图像的结构 详情请看我转载的一篇文章http://blog.csdn.net/hnust_xiehonghao/article/details/37656281

    二: 被控端的代码 

      注意下面代码要放到一个线程中去 因为用到了while死循环 表示一直发送消息  直到对方关闭接收,发送失败后自动退出! 一定要放进线程

     

    DWORD __stdcall SendScreen(LPVOID lparam)//线程处理屏幕传输
    {
    
    	DWORD *pParam   =   (DWORD   *)lparam; 
    	SOCKET MainSocket =*pParam; 
    	DWORD dwLastSend;
    
    
    
    	HWND hWnd = GetDesktopWindow();//获得屏幕的HWND.
    	HDC hScreenDC = GetDC(hWnd);   //获得屏幕的HDC.
    	HDC MemDC = CreateCompatibleDC(hScreenDC);
    	RECT rect; 
    	//该函数返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。
    	GetWindowRect(hWnd,&rect);
    	SIZE screensize;
    	screensize.cx=rect.right-rect.left;
    	screensize.cy=rect.bottom-rect.top;
    	//CreateCompatibleBitmap该函数创建与指定的设备hScreenDC环境相关的设备兼容的位图。
    	HBITMAP hBitmap = ::CreateCompatibleBitmap(hScreenDC,screensize.cx,screensize.cy);
     
    	while(1)
    	{
    		dwLastSend = GetTickCount();
    		HGDIOBJ hOldBMP = ::SelectObject(MemDC,hBitmap);
    		//该函数对hScreenDc环境区域中的像素进行位块转换,以传送到目标设备MemDC环境。
    		::BitBlt(MemDC,0,0,screensize.cx,screensize.cy,hScreenDC,rect.left,rect.top,SRCCOPY);
    		::SelectObject(MemDC,hOldBMP);
    		/***************************************************************/
    
    		HDC hDC =::CreateDC("DISPLAY",NULL,NULL,NULL); 
    		int iBits = ::GetDeviceCaps(hDC, BITSPIXEL) * ::GetDeviceCaps(hDC, PLANES);//当前分辨率下每个像素所占字节数  
    		::DeleteDC(hDC);
    
    		WORD   wBitCount;   //位图中每个像素所占字节数    
    		if (iBits <= 1)
    			wBitCount = 1;
    		else if (iBits <= 4)
    			wBitCount = 4;
    		else if (iBits <= 8)
    			wBitCount = 8;
    		else if (iBits <= 24)
    			wBitCount = 24;
    		else
    			wBitCount = iBits;
    
    		DWORD   dwPaletteSize=0;	//调色板大小, 位图中像素字节大小 
    		if (wBitCount <= 8)		
    			dwPaletteSize = (1 << wBitCount) *	sizeof(RGBQUAD);	
    
    
    		BITMAP  bm;        //位图属性结构
    		::GetObject(hBitmap, sizeof(bm), (LPSTR)&bm);  
    
    
    		BITMAPINFOHEADER   bi;       //位图信息头结构     
    		bi.biSize            = sizeof(BITMAPINFOHEADER);  
    		bi.biWidth           = bm.bmWidth;
    		bi.biHeight          = bm.bmHeight;
    		bi.biPlanes          = 1;
    		bi.biBitCount        = wBitCount;
    		bi.biCompression     = BI_RGB; //BI_RGB表示位图没有压缩
    		bi.biSizeImage       = 0;
    		bi.biXPelsPerMeter   = 0;
    		bi.biYPelsPerMeter   = 0;
    		bi.biClrUsed         = 0;
    		bi.biClrImportant    = 0;
    
    		DWORD dwBmBitsSize = ((bm.bmWidth * wBitCount+31)/32) * 4 * bm.bmHeight;    
    		HANDLE hDib  = ::GlobalAlloc(GHND,dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER));  //为位图内容分配内存
    		//HANDLE hDib  = ::GlobalAlloc(GHND,3686440*3);  //为位图内容分配内存
    		//锁定内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处。除非用 GlobalUnlock 函数将内存块解锁,否则地址会一直保持有效。
    		LPBITMAPINFOHEADER lpbi = (LPBITMAPINFOHEADER)GlobalLock(hDib);
    		*lpbi = bi;
    
    		HANDLE hPal = ::GetStockObject(DEFAULT_PALETTE);  // 处理调色板 
    		HANDLE  hOldPal=NULL; 
    		if (hPal)
    		{
    			hDC = ::GetDC(NULL);
    			hOldPal = SelectPalette(hDC,(HPALETTE)hPal, FALSE);
    			RealizePalette(hDC);
    		}
    		//将数据保存在指针(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize指向的位置
    		::GetDIBits(hDC, hBitmap, 0, (UINT) bm.bmHeight,(LPSTR)lpbi + sizeof(BITMAPINFOHEADER)+dwPaletteSize,(BITMAPINFO*)lpbi,DIB_RGB_COLORS);// 获取该调色板下新的像素值
    		if (hOldPal)//恢复调色板
    		{
    			SelectPalette(hDC, (HPALETTE)hOldPal, TRUE);
    			RealizePalette(hDC);
    			::ReleaseDC(NULL, hDC);
    		}	
    
    		BITMAPFILEHEADER   bmfHdr; //位图文件头结构     
    		bmfHdr.bfType = 0x4D42;  // "BM"  	// 设置位图文件头
    		DWORD dwDIBSize = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwPaletteSize + dwBmBitsSize;  
    		bmfHdr.bfSize = dwDIBSize;
    		bmfHdr.bfReserved1 = 0;
    		bmfHdr.bfReserved2 = 0;
    		bmfHdr.bfOffBits = (DWORD)sizeof(BITMAPFILEHEADER) + (DWORD)sizeof(BITMAPINFOHEADER) + dwPaletteSize;
    
    		MsgHead MsgSend;
    		MsgSend.dwCmd = CMD_SCREEN_TO_SHOW;
    		MsgSend.dwSize = dwBmBitsSize + dwPaletteSize + sizeof(BITMAPINFOHEADER);
    		MsgSend.dwExtend1 = bmfHdr.bfSize;
    		MsgSend.dwExtend2 = bmfHdr.bfOffBits;
    
    		if(!SendMsg(MainSocket, (char*)lpbi, &MsgSend))//自定义函数 其内进行2次发送数据。一次用send发送MsgHead结构体 一次发送字符buffer此处为lpbi 
    		{//使用本代码时  把SendMsg换成你自己的发送函数 本人的函数先发送一个自定义结构体再发送lpbi  分2次发送 故下面主控端分2次接受
    			::DeleteObject(MemDC);
    			::ReleaseDC(hWnd,hScreenDC);
    			GlobalUnlock(hDib);   //清除   
    			GlobalFree(hDib);
    			//::MessageBox(NULL, "发送失败","",MB_OK);
    			return 0;
    		}
    
    
    		/*
    		//将得到的屏幕截屏保存到E://mybitmap.bmp  
    		char strFilePath[111] = "E://mybitmap.bmp";
    		HANDLE hFile = CreateFile(strFilePath , GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);//创建位图文件   
    		DWORD dwWritten;
    		WriteFile(hFile, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);	// 写入位图文件头
    		WriteFile(hFile, (LPSTR)lpbi, dwDIBSize, &dwWritten, NULL);// 写入位图文件其余内容
    		*/
    		GlobalUnlock(hDib);   //清除   
    		GlobalFree(hDib);
    		//CloseHandle(hFile); 
    		if ((GetTickCount() - dwLastSend) < 110)
    			Sleep(100);
    	}
    	return 0;
    }


    三  

     

    主控端的代码:  

    1 由于主控端也要一个循环进行一直接收屏幕消息  所以下面这个函数的代码一定也要放进一个线程中去!也可以让一个线程去调用处理函数 我采用的是第二种 用线程去调用此函数!

     

     

    void CScreenDlg::GetFirstScreen()
    {
    
    	MsgHead  MsgSend;
    	MsgSend.dwCmd = CMD_GETFIRST_SCREEN;
    	MsgSend.dwSize = 0;
    	if(!SendMsg(m_MainSocket, NULL, &MsgSend))//发出请求屏幕传输的要求
    	{
    		::MessageBox(NULL, "屏幕传输请求失败", "出错", MB_OK);
    		closesocket(m_MainSocket);
    		return ;
    
    	}
    	//以下为屏幕的获取, 一直获取并显示  直到接收不到  或设置计时器 一定时间后退出
    	DWORD dwLastSend;
    	MsgHead MsgRecv; 
    	 
    	while(m_MainSocket != INVALID_SOCKET)
    	{
    	
    		if(!RecvData(m_MainSocket, (char *)&MsgRecv, sizeof(MsgHead)))//自定义接受函数  其内是用的recv函数  如使用本代码 替换为recv函数即可
    		{
    			::MessageBox(NULL, "屏幕数据接收,命令接收失败", "出错", MB_OK);
    			closesocket(m_MainSocket);
    			m_MainSocket = INVALID_SOCKET;
    			return ;
    		}
    
    		bmfHdr.bfType = 0x4D42;  // "BM"  	// 设置位图文件头 成员变量bmfHdr类型为 BITMAPFILEHEADER   
    		bmfHdr.bfSize = MsgRecv.dwExtend1;
    		bmfHdr.bfReserved1 = 0;
    		bmfHdr.bfReserved2 = 0;
    		bmfHdr.bfOffBits = MsgRecv.dwExtend2;
    		m_InfoSize = MsgRecv.dwExtend2 - sizeof(BITMAPFILEHEADER);//m_InfoSize为info信息头和调色板的大小的和
    
    
    		if(!RecvData(m_MainSocket,(char *)pData,MsgRecv.dwSize))//自定义接受函数 使用时换成你自己的函数 或者recv函数即可
    		{
    			::MessageBox(NULL, "屏幕数据接收,数据接收失败", "出错", MB_OK);
    			closesocket(m_MainSocket);
    			m_MainSocket = INVALID_SOCKET;
    			return ;			    
    		}
    
    
    	/*	//将bitmap数据写入文件中  创建一个bmp图像文件
    	    strcpy(strFilePath,"E://hehe.bmp");//strFilePath类型为char strFilePath[111] ;
    		if(hFile !=  INVALID_HANDLE_VALUE)  CloseHandle(hFile); //HANDLE hFile;
      	    hFile = CreateFile(strFilePath , GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);//创建位图文件   
    		DWORD dwWritten;
    		WriteFile(hFile, (LPSTR)&bmfHdr, sizeof(BITMAPFILEHEADER), &dwWritten, NULL);	// 写入位图文件头
    		WriteFile(hFile, (LPSTR)pData, bmfHdr.bfSize, &dwWritten, NULL);// 写入位图文件其余内容
    		CloseHandle(hFile); 	
    		*/
    		Invalidate(TRUE);//发送重绘系统消息
    
    		Sleep(10);
    	}
    }
    

     

    上面的代码收到了bmp图像的信息保存到了pData中!

     

    2 下面利用pData中的信息创建bmp图像的句柄

     

    HBITMAP CScreenDlg::GetBitmapFromData()
    {
    	HBITMAP hBitmap;
    	PBITMAPINFO lpBmpInfo; //位图信息
    
    	lpBmpInfo = PBITMAPINFO(pData);
    
    	HDC hDC = CreateDC("DISPLAY", NULL, NULL, NULL);
    	// 创建DDB位图
    	hBitmap = CreateDIBitmap(
    		      hDC,
    			  &lpBmpInfo->bmiHeader,
    			  CBM_INIT,
    			  pData + m_InfoSize,
    			  lpBmpInfo,
    			  DIB_RGB_COLORS) ;
    
    	DeleteDC(hDC);
    
    	return hBitmap;
    }


    关于DDB DIB 的区别 请参考本人博客MFC分栏    或者百度

     

     

    3   以下为调用Invalidate后  重绘图像     下面使用双缓冲技术   关于此技术参考下面文章中的第五条

    http://blog.csdn.net/hnust_xiehonghao/article/details/37741307

    下面的函数是在类向导中添加的消息响应函数  用来擦除窗口的

     

    BOOL CScreenDlg::OnEraseBkgnd(CDC* pDC)
    {
    	// TODO: 在此添加消息处理程序代码和/或调用默认值
    
    	//双缓存防止闪烁
        CDC DCmem;
    	DCmem.CreateCompatibleDC(pDC);
    	CBitmap bitmap;
    	//以下也可以从一个文件中载入bitmap图像  如注释中的语句
    	bitmap.m_hObject  = GetBitmapFromData();//(HBITMAP)LoadImage(AfxGetInstanceHandle(), strFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
    	CRect rect;
    	GetClientRect(&rect);
    	CBitmap *pOldBit=DCmem.SelectObject(&bitmap);
        //DCmem.FillSolidRect(rect,pDC->GetBkColor());//按原来背景填充客户区,不然会是黑色
    	pDC->BitBlt(0,0,rect.Width(),rect.Height(),&DCmem,0,0,SRCCOPY);
        DCmem.DeleteDC();     //删除DC
        bitmap.DeleteObject(); //删除位图
    	//return CDialog::OnEraseBkgnd(pDC);
    
    	return TRUE;
    }

     

     

     

     

     

     

     

    by hnust_xiehonghao

     

     

    展开全文
  • 利用DirectX7.0实现图像屏幕显示。(10KB)
  • 利用CBitmap将图像快速显示屏幕

    千次阅读 2007-10-07 18:22:00
    在编写的过程中需要将图像显示屏幕上,由于自己写的将图像所有像素绘制到CDC上的程序速度总不是很理想,因此想到了一个很经典的类——CBitmap类。以下是程序中实现显示到场景的方法。其中pDC为类的成员变量,在...
  • 在这篇博客中,我回答了一个最常见的问题:“如何使用OpenCV加载图像并将其显示屏幕上?” 从磁盘上加载图像并使用OpenCV显示它,首先需要调用cv2.imread函数,将图像的路径作为唯一参数传递。 然后调用cv2....
  • C# 图像处理(图像缩放、屏幕截取、图像合并、保存图像
  • HDR图像显示

    千次阅读 2015-05-01 15:54:26
    高动态范围图像(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节,根据不同的曝光时间的LDR(Low-Dynamic Range)图像,利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR...
  • SDL图像显示

    千次阅读 2012-01-18 15:17:40
    屏幕显示图像,就是对每一个像素点进行着色。首先我们对图片进行分析,取出每一个点的像素,CPU会将其保存在显存中,然后计算机会根据保存的像素,在屏幕上从上到下逐行逐点显示出来。  计算机用分辨率来表示...
  • 显示图像时,将通过提取图像的突出深色来确定屏幕的背景色。 先决条件 Android SDK 26 Android构建工具v26.0.0 Android支持存储库(检查) Android支持库v26.0.0 下载 使用Gradle: dependencies { compile '...
  • unity利用rendertexture将摄像机图像渲染到GUI屏幕上小图显示设置内容代码实现效果 设置内容 创建两个摄像机,一个摄像机将图像渲染到屏幕上,另一个摄像机将图像渲染到RenderTexture纹理贴图上。 创建...
  • 图像显示基本原理

    万次阅读 2017-05-06 22:44:33
    SOC显示图片的工作过程如下所示: (1)首先可以肯定的是,在SOC没有上电之前,图像信息(以jpg格式的图片为例)是存储在flash中的。在程序执 行过程中,SOC首先将flash中的数据通过SOC内部的flash控制器读入到内存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 152,496
精华内容 60,998
关键字:

屏幕图像显示