如何用c语言在手机上显示相册图片,c语言能显示图片吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/* Svga64k.bgi 测试文件 */

#include "graphics.h"

#include "Svga256.h"

#include "stdio.h"

#include "fcntl.h"

#include "malloc.h"

#include "io.h"

int huge Return_SVGA256(void)

{

return(SVGA320x200x256); /* 返回各种分辨率的对应编号 0~6 宏定义参见 Svga256.h */

}

void main()

{int width,height,i=DETECT,j=0,x0,y0,fp,x_x;

unsigned char fix,*buffer,pix24b[4];

DacPalette256 dac256;

installuserdriver("Svga256",Return_SVGA256);/* 对于svga256必需执行该函数以安装BGI驱动 */

initgraph(&i,&j,"");/* 执行TC默认的BGI初始化函数 */

for(x_x=0;x_x<76;x_x++){

if(x_x=1)

{

if((fp=open("xy_256.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

else

if(x_x=2){

if((fp=open("xy_2561.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

else

if(x_x=3){

if((fp=open("xy_2562.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

else

if(x_x=4){

if((fp=open("xy_2563.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

else

if(x_x=5){

if((fp=open("xy_2564.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

else

if(x_x=6){

if((fp=open("xy_2565.bmp",O_RDONLY|O_BINARY))==-1)

{

puts("Can't find file ""xy_256.bmp"".");

exit(1);

}

}

lseek(fp,18,SEEK_SET);

read(fp,&width,4);

read(fp,&height,4);

fix=(width%4)?(4-width%4):0;

x0=(320-width)/2;y0=(200-height)/2;

lseek(fp,54,SEEK_SET);

for(i=0;i<256;i++) /* 按照该图片的DAC色表设置色彩寄存器 */

{read(fp,pix24b,4); /* 读取DAC分量信息 */

dac256[i][0]=pix24b[2]>>2;dac256[i][1]=pix24b[1]>>2;dac256[i][2]=pix24b[0]>>2; /* 设置调色板 */

}

setvgapalette256(&dac256); /* 应用调色板, 定义参见 Svga256.h */

buffer=(unsigned char *)malloc(width);

for(j=height-1;j>=0;j--)

{read(fp,buffer,width);

lseek(fp,fix,SEEK_CUR);

for(i=0;i

putpixel(x0+i,y0+j,buffer[i]);

}

free(buffer);

close(fp);

}

getch();

closegraph();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简易相册C语言代码示例,它可以在Windows平台上显示指定文件夹中的bmp图片,点击屏幕后连续显示5张或以上的图片: ```c #include <stdio.h> #include <stdlib.h> #include <windows.h> #define MAX_IMAGES 10 #define IMAGE_WIDTH 640 #define IMAGE_HEIGHT 480 int main() { // 打开文件夹 char folder_path[MAX_PATH]; printf("Enter folder path: "); scanf("%s", folder_path); HANDLE hFind; WIN32_FIND_DATA FindData; char search_path[MAX_PATH]; sprintf(search_path, "%s\\*.bmp", folder_path); hFind = FindFirstFile(search_path, &FindData); // 加载所有bmp图片 int num_images = 0; HBITMAP images[MAX_IMAGES]; do { if (num_images >= MAX_IMAGES) { printf("Too many images!\n"); break; } char image_path[MAX_PATH]; sprintf(image_path, "%s\\%s", folder_path, FindData.cFileName); images[num_images] = (HBITMAP)LoadImage(NULL, image_path, IMAGE_BITMAP, IMAGE_WIDTH, IMAGE_HEIGHT, LR_LOADFROMFILE); if (images[num_images] == NULL) { printf("Failed to load %s!\n", image_path); continue; } num_images++; } while (FindNextFile(hFind, &FindData)); FindClose(hFind); // 初始化窗口 HWND hwnd = CreateWindow("STATIC", "Image Viewer", WS_VISIBLE | WS_BORDER | SS_CENTERIMAGE, 0, 0, IMAGE_WIDTH, IMAGE_HEIGHT, NULL, NULL, NULL, NULL); HDC hdc = GetDC(hwnd); int cur_image = 0; // 主循环 MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { if (msg.message == WM_LBUTTONDOWN) { // 响应点击事件,连续显示5张图片 for (int i = 0; i < 5 && cur_image < num_images; i++) { HDC hdc_mem = CreateCompatibleDC(hdc); SelectObject(hdc_mem, images[cur_image]); BitBlt(hdc, 0, 0, IMAGE_WIDTH, IMAGE_HEIGHT, hdc_mem, 0, 0, SRCCOPY); DeleteDC(hdc_mem); cur_image++; } } TranslateMessage(&msg); DispatchMessage(&msg); } // 释放资源 for (int i = 0; i < num_images; i++) { DeleteObject(images[i]); } ReleaseDC(hwnd, hdc); DestroyWindow(hwnd); return 0; } ``` 这个程序使用了Windows API的一些函数来操作窗口和加载位图文件。它会提示用户输入一个文件夹路径,然后在该文件夹中查找所有的bmp图片,并加载它们到内存中。然后,它会创建一个窗口并在窗口中显示第一张图片。当用户点击窗口时,程序会连续显示5张或以上的图片,直到所有的图片都被显示完为止。最后,程序会释放所有的资源并退出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值