title image


Smiley als DLL
Hi lebes,



das geht "relativ leicht".



Ich hab mir mal (mit meinen bescheidenen C++ Kenntnissen) eine DLL geschrieben,

die mir Bilder (also eine Matrix im Speicher) dreht und verkleinert.



Das schwierigste war eigentlich die Schnittstelle wegen der Übergebenen

Variablen-Dimensionen. Aber das bekommt man auch hin.



Dann muß man noch im Header und in der Def-Datei was beachten, wenn ich mich

richtig entsinne. Anbei hab ich mal den Inhalt der Header, der "Def" Datei und

eine Prozedur aus dem Code.

Vielleicht kannst du damit ja schon was anfangen.







Header:



#ifndef __MK_Image_H__ // doppeltes Einbinden verhindern

#define __MK_Image_H__

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000



#define VBCALL __stdcall

double VBCALL rLeft(char* dest,char* src,long width,long height);

double VBCALL rRight(char* dest,char* src,long width,long height);

double VBCALL verkleinern(long* dest,long* src,long width,long height,long tw,long th);

double VBCALL rgbdatentodib(char* dest,char* rsrc,char* gsrc,char* bsrc,long width,long height);

double VBCALL dibdatentotiff(char* dest,char* src,long width,long height);



#endif // __Image_H__





Def:



; MK_Image.def : Declares the module parameters for the DLL.



LIBRARY "MK_Image"

DESCRIPTION 'DLL for Visual Basic'



EXPORTS

rLeft

rRight

verkleinern

rgbdatentodib

dibdatentotiff





Code:



#include "memory.h"

#include "MK_Image.h"

/*extern "C" __declspec(dllexport) double __stdcall */

double VBCALL rLeft(char* dest,char* src,long width,long height)

{

int x=0,y=0;

int newpad=0,oldpad=0;



oldpad=(((int)width*3/4)+1)*4-(width*3) & 3;

newpad=(((int)height*3/4)+1)*4-(height*3) & 3;





for (y = 0; y
{

for(x=0;x<3*width;x=x+3)

{

memcpy((dest+x/3*(height*3+newpad)+(height-1)*3-y*3 ) , (src +x+y*(width*3+oldpad)),3);

/* (int) *(dest+x/3*(height*3+newpad)+(height-1)*3-y*3 ) = (int)*(src +x+y*(width*3+oldpad));

(char) *(dest+x/3*(height*3+newpad)+(height-1)*3-y*3 +1) = (char)*(src +x+y*(width*3+oldpad)+1);

(char) *(dest+x/3*(height*3+newpad)+(height-1)*3-y*3 +2) = (char)*(src +x+y*(width*3+oldpad)+2);

*/

}

}

return (long) *(dest+x/3*(height*3+newpad)+(height-1)*3-y*3);

}


Gruss Klapperstorch
----------------------------------------------------
Aus Felern lernt man oder...
Edjucashon isnt woerking

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: