News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

all BMP to JPG

Started by p0m1, January 20, 2010, 01:07:46 PM

Previous topic - Next topic

p0m1

hi, this code don't working...

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
    include \masm32\include\gdiplus.inc
    includelib \masm32\lib\gdiplus.lib
    include \masm32\macros\ucmacros.asm

    GdiplusStartupInput STRUCT
      GdiplusVersion           DWORD ?
      DebugEventCallback       DWORD ?
      SuppressBackgroundThread DWORD ?
      SuppressExternalCodecs   DWORD ?
    GdiplusStartupInput ENDS

    ImageCodecInfo STRUCT
      ClassID           CLSID <>
      FormatID          GUID <>
      CodecName         DWORD ?
      DllName           DWORD ?
      FormatDescription DWORD ?
      FilenameExtension DWORD ?
      MimeType          DWORD ?
      Flags             DWORD ?
      Version           DWORD ?
      SigCount          DWORD ?
      SigSize           DWORD ?
      SigPattern        DWORD ?
      SigMask           DWORD ?
    ImageCodecInfo ENDS

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
StrLen      PROTO :DWORD

.DATA
buffer      db "*.bmp",0
      token               dd 0
      image               dd 0
      numEncoders         dd 0
      sizeImageCodecInfo  dd 0
      pImageCodecInfo     dd 0
      gdipsi              GdiplusStartupInput <1>  ; version must be 1

.DATA?
buffer2     db 256 dup(?)
result      WIN32_FIND_DATA <?>
hdl         dd ?  

.code
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
start:
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    invoke FindFirstFile, ADDR buffer, ADDR result
    .IF eax!=INVALID_HANDLE_VALUE
        mov hdl, eax
             invoke MessageBox, 0,ADDR result.cFileName, ADDR result.cFileName, 10h
call _testpom
le_loop:
        invoke FindNextFile, hdl, ADDR result
        cmp eax, 0
        je fini
invoke MessageBox, 0, ADDR result.cFileName, ADDR result.cFileName, 10h
call _testpom
jmp le_loop
.ELSE
.ENDIF
fini:
    invoke FindClose, hdl
    ; inkey "OwNeDbYp0m1."
    exit
_testpom proc
    invoke GdiplusStartup, ADDR token, ADDR gdipsi, NULL
    ; invoke GdipLoadImageFromFile, uni$("sample.bmp"), ADDR image
    invoke GdipLoadImageFromFile, ADDR result.cFileName, ADDR image
    invoke GdipGetImageEncodersSize, ADDR numEncoders, ADDR sizeImageCodecInfo
    mov pImageCodecInfo, alloc(sizeImageCodecInfo)
    invoke GdipGetImageEncoders, numEncoders, sizeImageCodecInfo, pImageCodecInfo
    xor ebx, ebx
    mov esi, pImageCodecInfo
    .WHILE ebx < numEncoders
      .IF ucmp$([esi].ImageCodecInfo.MimeType, uni$("image/jpeg") )
        ; invoke GdipSaveImageToFile, image, uni$("sample.jpg"), esi, NULL
        invoke GdipSaveImageToFile, image, ADDR result.cFileName, esi, NULL
      .ENDIF
      add esi, SIZEOF ImageCodecInfo
      inc ebx
    .ENDW
    invoke GdipDisposeImage, image
    invoke GdiplusShutdown, token
    free pImageCodecInfo
ret
_testpom endp
end start

wtf ?
uni$("sample.jpg") to ADDR result.cFileName