jpeg.dll - was is da drin?

Dieses Thema im Forum "Programmieren allgemein" wurde erstellt von djtraumwelt, 01.10.2008.

  1. #1 djtraumwelt, 01.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Hallo an alle netten helfenden Menschen in diesem Board, wovon es meiner Erfahrung nach hier genug gibt. Deshalb wende ich mich, auch wenn ich schon ne Weile zu Windows zurück gestiegen bin, immer noch gerne an dieses Forum.

    Diesmal möchte ich ein Programm schreiben, mit dem ich jpegs öffnen, verändern und wieder speichern kann. Dazu möchte ich die jpeg.dll laden, die entsprechenden funktionen zum öffnen von jpegs aufrufen und dann die funktionen zum encodieren einer jpeg.

    Das Problem ist, dass ich anscheinend zu blöd bin, richtig zu googlen. Jedenfalls finde ich keine Anleitung, welche Funktionen die jpeg.dll so hat und welche Funktion was für Parameter und welchen Rückgabewert hat. So eine Anleitung suche ich. Falls da jemand n Link für mich hat, dann wäre ich überglücklich und endlos dankbar =)

    lg
    Alex
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 bitmuncher, 01.10.2008
    bitmuncher

    bitmuncher Der Stillgelegte

    Dabei seit:
    08.05.2007
    Beiträge:
    3.171
    Zustimmungen:
    0
    Welchen vernünftigen Grund gibt es eine Windows-Bibliothek zu nutzen anstatt der libjpeg?
     
  4. #3 Tropezien, 01.10.2008
    Tropezien

    Tropezien Ja, aber hallo ...

    Dabei seit:
    09.12.2004
    Beiträge:
    18
    Zustimmungen:
    0
    Hier: http://www.autohotkey.com/forum/topic8761.html gefunden mit google nach: "jpeg.dll examine function"; und nein, ich habe nur noch wenig Ahnung über MS-Win-Programmierung.
     
  5. #4 djtraumwelt, 03.10.2008
    djtraumwelt

    djtraumwelt Foren As

    Dabei seit:
    21.09.2006
    Beiträge:
    78
    Zustimmungen:
    0
    Vielen Dank erstmal!
    Mit dem Begriff libjpeg hab ich alles gefunden, wonach ich suchte. Das Programm weigert sich zwar einen schwarzen Pixel gelb zu machen, aber das ist jetzt zu Win spezifisch für dieses Board. Wer sich mein Problem trotzdem mal anschauen will, ich freu mich über jede Hilfe.
    Code:
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <jpeglib.h>
    
    HINSTANCE hInst;
    int much=1;
    
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow) {
     MSG msg;
     BOOL bRet;
     hInst=hInstance;
     HWND hWnd;
     int xwin=0;
     int ywin=0;
    
     char winclass[] = "Fensterklasse";
     WNDCLASS wc;
    
     wc.style = CS_HREDRAW | CS_VREDRAW;
     wc.lpfnWndProc = WndProc;
     wc.cbClsExtra = 0;
     wc.cbWndExtra = 0;
     wc.hInstance = hInstance;
     wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
     wc.hCursor = LoadCursor (NULL, IDC_ARROW);
     wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
     wc.lpszMenuName = NULL;
     wc.lpszClassName = winclass;
    
     RegisterClass (&wc);
    
     xwin=GetSystemMetrics(SM_CXSCREEN);
     ywin=GetSystemMetrics(SM_CYSCREEN);
     xwin /= 2;
     xwin -= 400; //800 Breit
     ywin /= 2;
     ywin -= 200; //400 Hoch
    
     hWnd = CreateWindow (winclass, "Hello World", WS_OVERLAPPEDWINDOW, xwin, ywin, 800, 400, NULL, NULL, hInstance, NULL);
    
     ShowWindow(hWnd, nCmdShow);
     UpdateWindow(hWnd);
    
     while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
     }
    
     return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
     HDC hdc, hdcb;
     HBITMAP hbit;
     PAINTSTRUCT ps;
     RECT crect, wrect;
     int xdiff;
     int ydiff;
     int x, y, i;
     struct jpeg_decompress_struct cinfo;
     struct jpeg_error_mgr jerr;
     FILE *infile;
     byte *buffer;
     byte r, g, b;
    
     if (msg == WM_PAINT) {
      if (much==1) {
       much=2;
       GetWindowRect(hWnd,&wrect);
       GetClientRect(hWnd,&crect);
       xdiff=(wrect.right - wrect.left) - crect.right;
       ydiff=(wrect.bottom - wrect.top) - crect.bottom;
       wrect.left=wrect.left - (xdiff / 2);
       wrect.top=wrect.top - (ydiff / 2);
       xdiff += 800;
       ydiff += 400;
       MoveWindow(hWnd,wrect.left,wrect.top,xdiff,ydiff,TRUE);
       hdc=BeginPaint(hWnd,&ps);
       EndPaint(hWnd,&ps);
       InvalidateRect(hWnd,NULL,FALSE);
       return 0;
      } else if (much==2) {
       much=3;
       cinfo.err = jpeg_std_error(&jerr);
       jpeg_create_decompress(&cinfo);
       if ((infile=fopen("zb.jpg","rb")) == NULL) {
        MessageBox(hWnd,"Grafik konnte nicht geöffnet werden: zb.jpg","Error",MB_OK);
        PostQuitMessage(0);
        return 0;
       }
       jpeg_stdio_src(&cinfo, infile);
       jpeg_read_header(&cinfo, TRUE);
       jpeg_start_decompress(&cinfo);
       buffer = (byte*) malloc(2400);
    
       hdc=BeginPaint(hWnd,&ps);
       hdcb=CreateCompatibleDC(hdc);
       hbit=CreateCompatibleBitmap(hdc,800,400);
       SelectObject(hdcb,hbit);
       y=0;
       while(cinfo.output_scanline < cinfo.output_height) {
        jpeg_read_scanlines(&cinfo, (JSAMPARRAY) &buffer, 1);
        i=0;
        for(x=0; x < 800; x++) {
         r=buffer[i];
         g=buffer[i+1];
         b=buffer[i+2];
         i+=3;
         SetPixel(hdcb,x,y,RGB(r,g,b));
        }
        y++;
       }
       EndPaint(hWnd,&ps);
       jpeg_finish_decompress(&cinfo);
       jpeg_destroy_decompress(&cinfo);
       InvalidateRect(hWnd,NULL,FALSE);
       return 0;
      } else {
       hdc=BeginPaint(hWnd,&ps);
        BitBlt(hdc,0,0,800,400,hdcb,0,0,SRCCOPY);
        SelectObject(hdc,(HPEN) GetStockObject(WHITE_PEN));
        MoveToEx(hdc,50,50,NULL);
        LineTo(hdc,100,100);
        SetPixel(hdc,100,50,RGB(255,0,0));
       EndPaint(hWnd,&ps);
       return 0;
      }
     }
     if (msg == WM_DESTROY) {
      PostQuitMessage(0);
      return 0;
     }
    
     return DefWindowProc(hWnd,msg,wParam,lParam);
    }
    
    Die weiße Linie und der rote Pixel werden angezeigt, alles andere jedoch bleibt schwarz.
     
  6. #5 saeckereier, 03.10.2008
    saeckereier

    saeckereier Graue Eminenz

    Dabei seit:
    08.05.2005
    Beiträge:
    1.920
    Zustimmungen:
    0
    Ort:
    Im schönen Norden
    Ähh, wir sind hier ein Linux/Unix Forum und wenn ich richtig sehe wird das ein Windows Programm, oder? Da bist du hier leider falsch...
     
Thema:

jpeg.dll - was is da drin?

Die Seite wird geladen...

jpeg.dll - was is da drin? - Ähnliche Themen

  1. Gimp-Projekt sucht dringend Entwickler

    Gimp-Projekt sucht dringend Entwickler: Das Gimp-Projekt ruft Windows-Entwickler zur Mithilfe auf, die in der Lage sind, die zahlreichen über die Jahre angesammelten Fehler in der...
  2. Linux-Fachleute dringend gesucht

    Linux-Fachleute dringend gesucht: Weltweit werden dieses Jahr mehr Linux-Spezialisten gesucht, als auf dem Markt verfügbar sind. Daraus resultieren nach einer Studie der Linux...
  3. Dringend: Samba-Server zerstört Konfiguration des LDAP-Servers. Anonymer Zugang weg.

    Dringend: Samba-Server zerstört Konfiguration des LDAP-Servers. Anonymer Zugang weg.: Hey Leute, hoffe das ist das richtige Forum, brauche allerdings dringend Hilfe! Haben in der Schule den sogenannten Open School Server (basiert...
  4. Brauche dringend Hilfe nach System Rücksetzung

    Brauche dringend Hilfe nach System Rücksetzung: Hallo. Leider habe ich nicht viel Ahnung von Linux Programmen und habe nach einem Telefonat mit dem technischen Support von Hercules bei meinem...
  5. Suche dringend Virtualisierer mit USB Support

    Suche dringend Virtualisierer mit USB Support: Erstmal die Vorgeschichte: Kinder von einem Bekannten von mir haben einen Lego NXT 2.0 bekommen (ein Programmierbarer Roboter, der per USB...