|
저는 아무리 해도 잘 됩니다. 말씀하신 것처럼 Image->Picture->Bitmap->LoadFormFile로 해도 잘 되네요.
비트맵 파일도 16컬러에 4kB짜리부터 트루컬러 9메가짜리까지 여러가지로 해봤으나 똑같이 잘 됩니다.
계속 해결이 안되신다면...
1. dll 소스와 호출하는쪽 소스에서 이 테스트에 필요한 부분만 남기고 나머지는 모두 삭제해서 데모로
만드신 후 해보세요. 안되면 첨부로 올려주세요. 제가 테스트해보겠습니다.
2. 불러들이려는 비트맵 파일을 첨부로 올려주세요. 해당 비트맵 파일의 문제일지도 모르겠네요.
그럼...
Starlet 님이 쓰신 글 :
: 답변 감사드립니다. 테스트까지 해주시다시....^^
:
: 여러가지로 실험을 해봤는데 Image->Picture->LoadFormFile 로 불러온 이미지는 dll에서도 잘 작동하나
: Image->Picture->Bitmap->LoadFormFile 로 불러온후 Dll에 Image를 넘겨줘서 Image->Picture->Bitmap->SaveToFile로 하면 0 byte가 되는군요. 물론 Dll로 넘겨주기전에 시험삼아 Image->Picture->Bitmap->SaveToFile를 해보면 잘 됩니다만 Dll 내부에서는 0 Byte가 되어버립니다.
: TImage는 Dll내에서 잘 작동하나 Bitmap이 문제인듯 합니다. 해결방법이 없을까요?
:
: 박지훈.임프 님이 쓰신 글 :
: : 똑같이 해봤는데, 저는 잘 되는데요? 혹시 다른 실수를 하신 것은 아니신지..
: : 예를 들어 비트맵이 아닌 jpg 등 다른 이미지를 불러들였다면, 보여주신 코드처럼 Image->Picture->Bitmap을
: : 액세스하면 0바이트로 저장됩니다.
: :
: : 그럼...
: :
: :
: : Starlet 님이 쓰신 글 :
: : : 안녕하세요. 아래의 함수는 TImage *Image 를 인자로 가진 Dll 내에 있는 함수입니다.
: : :
: : : extern "C" __declspec(dllexport) int _f_SaveImage(TImage* Image, int ImageID)
: : : {
: : : Image->Picture->Bitmap->SaveToFile("C:\\DllMain.bmp");
: : :
: : : ....
: : :
: : :
: : : 위와 같이 SaveToFile로 그림을 저장하면 0 바이트 파일만 생성되는군요. dll 호출전에 같은 TImage를 가지고 Image->Picture->Bitmap->SaveToFile("C:\\DllMain.bmp") 이렇게 하면 잘 저장됩니다.
: : : Dll에 TImage* 를 인자로 넘겨줄때 처리해줘야 하거나 주의해야 할 사항이 있는지요?
|