Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 26 kết quả

Đề tài: Chương trình đọc và hiển thị file ảnh.

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Thumbs down Chương trình đọc và hiển thị file ảnh.

    Bạn nào có chương trình đọc và hiển thị file ảnh viết bằng Visual C++ hoặc C++ share cho mình với, có cả code thì càng tốt.
    Thanks!
    Live and feel....

  2. #2
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    - Bạn muốn đọc file ảnh gì mới được ? Thiếu gì định dạng ành : bmp, jpg ...
    - Bạn đã post sai box, mình vừa move lại cho bạn đó.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    File dạng nào cũng được bạn ạ.Ví dụ dạng gif,bmp và Khi mở 1 file ảnh định dạng gif hoặc bmp trong chương trình thì báo cho biết kiểu của file ảnh và hiển thị được ảnh đó.
    Live and feel....

  4. #4
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mỗi file ảnh có cấu trúc khác nhau chứ, đâu có chuyện mở tổng quát cho các định dạng được.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  5. #5
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Trích dẫn Nguyên bản được gửi bởi meoconlongvang Xem bài viết
    Mỗi file ảnh có cấu trúc khác nhau chứ, đâu có chuyện mở tổng quát cho các định dạng được.
    Đó là mình nói ví dụ thôi. Mà bạn có chương trình đọc và hiển thị một loại file ảnh nào đó không share cho mình với.
    Live and feel....

  6. #6
    Ngày gia nhập
    10 2007
    Bài viết
    45

    Mặc định Chương trình đọc và hiển thị file ảnh.

    - Mình có viết code C++ hiển thị file ảnh .bmp = thư viện openGL nè, bạn còn cần không. (Do code mình viết trên environment VC++ 2008) nên không biết có chạy trên các bạn VC++ khác không nữa.

    Thân,

  7. #7
    Ngày gia nhập
    11 2008
    Bài viết
    17

    Trích dẫn Nguyên bản được gửi bởi khanhduy301 Xem bài viết
    - Mình có viết code C++ hiển thị file ảnh .bmp = thư viện openGL nè, bạn còn cần không. (Do code mình viết trên environment VC++ 2008) nên không biết có chạy trên các bạn VC++ khác không nữa.

    Thân,
    Bạn post cho mình đi.

  8. #8
    Ngày gia nhập
    10 2007
    Bài viết
    45

    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    #include "glut.h"
    #include <math.h>
    #include <process.h>
    RGBQUAD *rgbquad;
    int rgbquad_array_size;
    BITMAPFILEHEADER bmfheader;
    BITMAPINFOHEADER bminfoheader;
    static GLfloat spin;
    void init();
    void ve();
    void mouse(int button, int state, int x, int y) ;
    GLuint texture;
    void bindtexture();
    int main(int argc, char** argv)
    {
    	////////////////////////////////////////
    	FILE *my_file1 = fopen("d:\\vctemp\\bmp1\\jake1.bmp","rb");
    	fread(&bmfheader,sizeof(BITMAPFILEHEADER),1,my_file1);
    	fread(&bminfoheader,sizeof(BITMAPINFOHEADER),1,my_file1);
    	// Prinf to screen...//////////////////////
    	printf("Bitmap Information...\n");
    	printf("Type: %c\n",bmfheader.bfType);
    	printf("Size: %i\n",bmfheader.bfSize);
    	printf("Starting position of image data in bytes: %i\n",bmfheader.bfOffBits);
    	printf("Reserved 1: %i\n",bmfheader.bfReserved1);
    	printf("Reserved 2: %i\n",bmfheader.bfReserved2);
    	printf("\nBitmap Advance Information...\n");
    	printf("Header size in bytes: %i byte(s)\n",bminfoheader.biSize/65536);
    	printf("Width: %d px\n",bminfoheader.biWidth);
    	printf("Height: %d px\n",bminfoheader.biHeight);
    	printf("Number of colour planes: %i\n",bminfoheader.biPlanes);
    	printf("Bits per pixel: %i\n",bminfoheader.biBitCount);
    	printf("Image size in bytes: %i byte(s)\n",bminfoheader.biSizeImage);
    	printf("Compression: %i\n",bminfoheader.biCompression);
    	printf("X Pixels per meter: %i\n",bminfoheader.biXPelsPerMeter);
    	printf("Y Pixels per meter: %i\n",bminfoheader.biYPelsPerMeter );
    	printf("Number of colours: %i\n",bminfoheader.biClrUsed);
    	printf("Important colours: %i\n",bminfoheader.biClrImportant);
    	printf("======================================================\n");
    	//unsigned short bo_2_byte_thua;
    	//fread(&bo_2_byte_thua,sizeof(unsigned short),1,my_file1);
    	rgbquad_array_size = (bminfoheader.biSizeImage)/sizeof(RGBQUAD);
    	rgbquad = new RGBQUAD[rgbquad_array_size];
    	for(int tmp = 0; tmp < rgbquad_array_size; tmp++)
    	{
    		fread(&rgbquad[tmp],sizeof(RGBQUAD),1,my_file1);
    	}
    	fclose(my_file1);
    	unsigned int tmp01 = bminfoheader.biSizeImage / 3;
    	__asm
    	{
    		mov ecx,tmp01;
    		mov eax,rgbquad;
    loop1:
    		mov bl,[eax];
    		mov bh,[eax+2];
    		mov [eax+2],bl;
    		mov [eax],bh;
    		add eax,3;
    		dec ecx;
    		jnz loop1;
    	};
    	glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    	glutInitWindowPosition(0, 0) ;
    	glutInitWindowSize(640,480) ;
    	glutCreateWindow("Le Nguyen Khanh Duy");
    	init();
    	bindtexture();
    	glutDisplayFunc(ve);
    	glutMainLoop();
    	return 0;
    }
    
    void init()
    {
    	// Set the clearing background color...
    	glClearColor(0.0f,0.0f,1.0f,1.0f);
    	//initialize viewing values...
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
    
    
    }
    void ve()
    {
    	glClearColor(0.0f,0.0f,0.0f,0.0f);
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	///////////// Lighting ///////////////
    	glPushMatrix();
    	// Ambient Light...
    	GLfloat ambient_light_color[] = {0.5f,0.5f,0.5f,0.5f};
    	glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient_light_color);
    	// Light 1...
    	GLfloat light1_color[] = {2.0f,2.0f,2.0f,2.0f};
    	GLfloat light1_position[] = {4.0f, 0.0f, 8.0f, 1.0f};
    	glLightfv(GL_LIGHT0,GL_DIFFUSE,light1_color);
    	glLightfv(GL_LIGHT0,GL_POSITION,light1_position);
    	::glPushMatrix();
    	/***** Export to screen *****/
    	::glTranslatef(0.0,0.0,0.0);
    	::glEnable(GL_TEXTURE_2D);
    	::glBindTexture(GL_TEXTURE_2D,texture);
    	::glBegin(GL_QUADS);
    
    	glNormal3f(-1.0f,-1.0f,1.0f);
    	glTexCoord3d(0.0,0.0,0.0);
    	glVertex3d(-1.0,-1.0,0.0);
    
    	glNormal3f(-1.0f,1.0f,1.0f);
    	glTexCoord3d(0.0,1.0,0.0);
    	glVertex3d(-1.0,1.0,0.0);
    
    	glNormal3f(1.0f,1.0f,1.0f);
    	glTexCoord3d(1.0,1.0,0.0);
    	glVertex3d(1.0,1.0,0.0);
    
    	glNormal3f(1.0f,-1.0f,1.0f);
    	glTexCoord3d(1.0,0.0,0.0);
    	glVertex3d(1.0,-1.0,0.0);
    
    	glEnd();
    	::glutSwapBuffers();
    	::glFlush();
    
    };
    
    void bindtexture()
    {
    	::glGenTextures(1,&texture);
    	::glEnable(GL_TEXTURE_2D);
    	::glBindTexture(GL_TEXTURE_2D,texture);
    	::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,bminfoheader.biWidth,bminfoheader.biHeight,0,GL_RGB,GL_UNSIGNED_BYTE,rgbquad);
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    
    };
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		congdongcviet001.jpg
Lần xem:	39
Size:		28.3 KB
ID:		608

    - - Đây là đoạn code mình đã làm khi mới tập tành openGL, do đó nó còn chưa nhiều khuyết điểm (như chưa xóa memory sau khi load hình xong... nên khi chạy sẽ hơi nặng RAM tí).

    Thân,

  9. #9
    No Avatar
    nguyenk2089@yahoo.com Khách

    cái này là xử lý hình 24bits. vậy còn nếu hình 8bits thì xử lý sao bạn ?

    Chú ý không gửi nhiều bài giống nhau !
    Đã được chỉnh sửa lần cuối bởi meoconlongvang : 10-11-2008 lúc 12:08 PM.

  10. #10
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Trích dẫn Nguyên bản được gửi bởi nguyenk2089@yahoo.com Xem bài viết
    cái này là xử lý hình 24bits. vậy còn nếu hình 8bits thì xử lý sao bạn ?
    8 bit và 24 bit xử lý y hệt nhau mà bạn, chỉ khác một chỗ là 8 bit được chia làm 2 loại là grayscale và 256 màu.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

Các đề tài tương tự

  1. Cách add file thư viện dll vào file exe để tạo một file chạy duy nhất C#
    Gửi bởi nthung2112 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 20
    Bài viết cuối: 01-09-2012, 10:01 AM
  2. File backup .bak có dung lương lớn hơn file .mdb và file log
    Gửi bởi MYNAM trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 4
    Bài viết cuối: 27-07-2012, 12:59 PM
  3. Giới thiệu cách chuyển File Ảnh thành file Video trong download proshow gold
    Gửi bởi thuhu0900x trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 3
    Bài viết cuối: 03-07-2012, 03:54 AM
  4. Đọc dữ liệu file midi dạng số HEX và lấy lời nhạc trong file ra file text
    Gửi bởi kimngockhtn_2007 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 29-06-2011, 04:40 PM
  5. Trả lời: 17
    Bài viết cuối: 23-05-2011, 11:47 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn