本文目錄一覽:
- 1、c語言中如何輸出圖像
- 2、C語言怎麼輸出一張圖片?
- 3、c語言圖像處理
- 4、如何用C語言把一般圖像轉換成紅綠色盲眼中的圖像
- 5、用c語言怎樣將一堆16進制碼轉換成圖片
- 6、C語言里 灰度圖像怎麼轉換為二維數組?
c語言中如何輸出圖像
lz需要弄清楚,你要輸出什麼格式的圖像,bmp,JPG。。。不同格式的圖像的數據內部結構是不一樣的,弄清楚不同格式圖片的數據結構組成,直接採用相應地算法,用C語言文件輸出函數(fopen,fprintf……那幾個函數,具體我也忘了怎麼用了)將數據點寫入文件就行了。
C語言怎麼輸出一張圖片?
輸出到文件的話,按照指定圖片格式,寫入文件即可。
電腦型號:微星 GF63 Thin 9SC
系統版本:Microsoft Windows 10
文本文件
1、打開電腦上要讀取的文本文件。
2、打開文本後,點擊文本左上角的【文件】按鈕。
3、點擊【另存為】。這樣就會保存本來的這個文本文件,生成一個新的c文件。
4、點擊【保存類型-對應的下拉按鈕】。
5、選擇【C source file(*.c)】。這個就是我們需要轉換成C格式的後綴。
6、選擇後,點擊【保存】。保存後我們即可正常讀取該文件了。
c語言圖像處理
c語言不自帶圖形處理方面的東西。TC特有的頭文件graphics.h,其他編譯環境都用不了,可移植性是零。而且TC實在太老,與現在c語言標準差距非常大。基本是無法運行現在的代碼。所以不太建議你用它。
非要用純c,可以自己寫函數調用Windows AP和GUI接口。而且需要包含windows.h頭文件。
網上有個大神用c—free寫的代碼在附件里。
/*
純C通過 Windows API 編寫的基本 Windows 圖形界面
整理加原創,基本上每一句代碼都有注釋
通過 C-Free 3.5編譯
*/
#include string.h //這個頭文件在擴展名為.c時是不需要加的
#include windows.h //windows api必須包含的頭文件
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); //窗口函數的前向聲明
//參數說明:
//HINSTANCE hInstance 當前實例句柄
//HINSTANCE hPrevInstance 以前版本的遺留產物,現在總是置為 NULL
//LPSTR lpCmdLine 命令行的產生,可以從開始-獲得程序運行的參數,由此傳入
//int nCmdShow 程序最初的顯示模式,正常,最大化或最小化
//主函數的入口是WinMain, 類型為int
//WINAPI標誌是一種特定的調用, 它定義了一種生成機器代碼和放置函數參數的方式
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpcmdLine,int nCmdShow)
{
//TCHAR, TEXT都是統一單字節和雙字節字符的類型, 建議使用
static TCHAR szAppName[] = TEXT(“MyFirstWindows”);
static TCHAR szClassName[] = TEXT(“MFWClass”);
HWND hwnd; //一定一個窗口句柄
MSG msg; //定義一個消息結構體
WNDCLASS wndclass; //定義一個 WNDCLASS 結構用於註冊窗口
wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口類的類風格,每當水平和垂直大小改變時完全刷新窗口
wndclass.lpfnWndProc = WndProc; //此窗口類所使用的窗口函數的入口地址
wndclass.cbClsExtra = 0; //用於在類結構中預留一些額外的空間
wndclass.cbWndExtra = 0; //用於在windows內部保存的窗口結構中預留一些額外的空間
wndclass.hInstance = hInstance; //指定所在程序的實例句柄
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //定製圖標
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //定製鼠標圖形
wndclass.hbrBackground = (HBRUSH)GetStockObject(GRAY_BRUSH); //定義背景顏色
wndclass.lpszMenuName = NULL; //指定窗口類的菜單
wndclass.lpszClassName =szClassName; //指定窗口類的類名
//註冊窗口,參數為指向 WNDCLASS 結構的指針
//如果註冊不成功,則彈出一個對話框說明情況
//MessageBox是僅有的可以在舊版本和新版本windows都可以運行的對話框
if(!RegisterClass(wndclass))
{
MessageBox(NULL,TEXT(“This program requires Windows NT or above!”),szAppName,MB_ICONERROR);
return 0;
}
//創建窗口
hwnd = CreateWindow(
szClassName, //窗口類的名稱
TEXT(“Title:My First Windows Program. 這裡是標題”), //窗口標題
//WS_OVERLAPPEDWINDOW, //窗口顯示風格,這行實際是一個預定義,相當於下面的集合,可以單獨設置
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
CW_USEDEFAULT, //初始 x 方向的位置
CW_USEDEFAULT, //初始 y 方向的位置
CW_USEDEFAULT, //初始 x 方向的大小
CW_USEDEFAULT, //初始 y 方向的大小
NULL, //父窗口句柄
NULL, //菜單句柄
hInstance, //程序實例句柄
NULL ); //創建參數
//顯示窗口,第一個參數 hwnd 是 CreateWindow 所創建的窗口的句柄
//第二個參數 nCmdShow 是主函數給的,由快捷方式獲得
ShowWindow(hwnd,nCmdShow);
//刷新窗口,給窗口函數,在本程序中即 WndProc 發送一個 WM_PAINT
UpdateWindow(hwnd);
//消息循環
while(GetMessage(msg,NULL,0,0)) //接受自己創建的所有窗口的所有消息
{
TranslateMessage(msg); //將 msg 結構體傳給windows以進行一些鍵盤轉換, 即將擊鍵消息轉換為字符消息
DispatchMessage(msg); //再次將 msg 結構體傳給windows,由windows將該消息發送給適當的窗口函數
}
return (int)msg.wParam;
}
//窗口函數
//參數說明:
//HWND hwnd, 接受消息的窗口句柄,由CreateWindow函數返回
//UINT message, 消息標誌符,用以標識消息,每個消息均有一個唯一對應的消息標識符
//WPARAM wParam, 是 WORD PARAM 的意思,一個32位的消息參數,其含義和數值根據消息的不同而不同
//LPARAM lParam, 是 LONG PARAM 的意思,一個32位的消息參數,其值和消息有關
//CALLBACK函數指由程序員定義,編程實現,而由windows系統調用的函數
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc; //定義一個設備描述表句柄結構體
//定義一個 PAINTSTRUCT 的繪製信息結構體,
//其包含了包含了當前無效矩形區域的坐標和其他信息,用於刷新用戶區的內容
PAINTSTRUCT ps;
RECT rect; //定義一個 RECT 結構體,其有left,top,right,bottom 四個域
//處理傳進的各種消息
switch(message)
{
//窗口創建
case WM_CREATE: MessageBox(NULL,”MessageContent : This is WM_CREATE,這是 WM_CREATE。”,
“MessageTiTle 這是對話框的標題”,MB_OK);
return 0;
//窗口繪製
case WM_PAINT: hdc = BeginPaint(hwnd,ps); //由BeginPaint開始,返回設備描述表以開始繪圖
GetClientRect(hwnd,rect); //獲取用戶區域的大小
//格式話文本輸出
DrawText(hdc,TEXT(“WindowsContent : I am a developer. 我為計算機而生。”),
-1,rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);
EndPaint(hwnd,ps); //以EndPaint結束,釋放設備描述表句柄
return 0;
//窗口消亡
case WM_DESTROY: MessageBox(NULL,”MessageContent : This is WM_DESTROY,這是 WM_DESTROY。”,
“MessageTiTle 這是對話框的標題”,MB_OK);
PostQuitMessage(0);
return 0;
}
//凡是窗口函數不予處理的消息應交由windows默認消息處理函數DefWindowProc處理
return DefWindowProc(hwnd,message,wParam,lParam);
}
如何用C語言把一般圖像轉換成紅綠色盲眼中的圖像
患紅綠色盲的人不能區分紅色和綠色,他們把整個光譜看成兩種基本的色調:長波(紅、橙、黃、綠)部分為黃色,短波(青、藍、紫)部分為藍色,所以可想而知,把RGB色調轉化為YB就行了,具體公式應該也不複雜,我不是專業的色彩師,這點不懂,如果你找到公式後就很簡單了,獲取圖片像素的RGB,轉化為YB,在顯示出來就行了。還有問題可以給我留言
用c語言怎樣將一堆16進制碼轉換成圖片
如果你確定那些16進制碼是圖片數據,那麼用C語言文件操作,以二進制寫入到文件中保存,然後這個文件就變成圖片文件了
C語言里 灰度圖像怎麼轉換為二維數組?
1、步驟大概這樣
第一步:讀取圖像數據到內存
第二步:讀取文件頭
第三步:讀取信息頭
第四步:讀取圖像矩陣到二維數組
2、例程:
FileName=fileDlg.GetFileName ();
FILE *fp=fopen(FileName,”rb”);//二進制讀方式打開指定的圖像文件
fread(FileHead, sizeof(BITMAPFILEHEADER), 1,fp); //讀取文件頭,文件指針自動後移
fread(InfoHead, sizeof(BITMAPINFOHEADER), 1,fp);//讀取信息頭,文件指針自動後移
//獲取圖像寬、高、每像素所佔位數等信息
bmpWidth = InfoHead.biWidth;
bmpHeight = InfoHead.biHeight;
//下面完成圖像數據向內存數組的存儲
ImageData=new unsigned char*[bmpHeight];
if(InfoHead.biBitCount==24)
{
for (int i=0;ibmpHeight;i++)
{
ImageData[i]=new unsigned char[(bmpWidth*3+3)/4*4];
}
for (int k=0;kbmpHeight;k++ )
{
for(int j=0;j(bmpWidth*3+3)/4*4;j++)
{
fread(ImageData[k][j],1,1,fp);//上面完成動態二維數組的申請,這裡實際讀取圖像數據
}
}
fclose(fp);//關閉文件
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284628.html