The MASM Forum

General => The Campus => Topic started by: hamidfarhadiyan2 on March 14, 2014, 08:21:19 AM

Title: Help me/ jpeg compression using masam32
Post by: hamidfarhadiyan2 on March 14, 2014, 08:21:19 AM
Hi
I am working on a program that it is to be capturing screenshots
I created of it 80%, But I have a problem, It can capturing screenshots with .bmp and size each screenshots is very big, "about 1.5 mb"

I needing to a "jpeg compression using masam32" or a "jpeg compression sample codes masm" or a "gdi+ jpeg saving using masm32"
that it be could capturing screenshots with .jpeg format and size each screenshots to be with "low quickly" and size it  " like 70 kb"
Shrink the image using low-quality interpolation

Please help me
Title: Re: Help me/ jpeg compression using masam32
Post by: MichaelW on March 14, 2014, 12:32:22 PM
No comments or error handling, and no control over the encoder parameters:


;==============================================================================
    include \masm32\include\masm32rt.inc
    include \masm32\include\gdiplus.inc
    includelib \masm32\lib\gdiplus.lib
;==============================================================================
    .data
    .code
;==============================================================================
GdipBmpToJpg proc uses ebx esi pBmpFilename:DWORD, pJpgFilename:DWORD

    LOCAL token:DWORD
    LOCAL image:DWORD
    LOCAL numEncoders:DWORD
    LOCAL sizeImageCodecInfo:DWORD
    LOCAL gdipsi:GdiplusStartupInput

    invoke RtlZeroMemory, ADDR gdipsi, SIZEOF GdiplusStartupInput + 16
    mov gdipsi.GdiplusVersion, 1

    invoke GdiplusStartup, ADDR token, ADDR gdipsi, NULL
    invoke GdipLoadImageFromFile, pBmpFilename, ADDR image
    invoke GdipGetImageEncodersSize, ADDR numEncoders, ADDR sizeImageCodecInfo
    mov esi, alloc(sizeImageCodecInfo)
    invoke GdipGetImageEncoders, numEncoders, sizeImageCodecInfo, esi

    xor ebx, ebx
    .WHILE ebx < numEncoders
        .IF ucmp$([esi].ImageCodecInfo.MimeType, uni$("image/tiff"))
            invoke GdipSaveImageToFile, image, pJpgFilename, esi, NULL
            printf("%d\n\n",eax)
            .BREAK
        .ENDIF
        add esi, SIZEOF ImageCodecInfo
        inc ebx
    .ENDW

    invoke GdipDisposeImage, image
    invoke GdiplusShutdown, token
    free esi

    ret
GdipBmpToJpg endp
;==============================================================================
start:
;==============================================================================

    invoke GdipBmpToJpg, uni$("\masm32\examples\exampl04\car\car.bmp"),
                         uni$("out.jpg")

    inkey
    exit
;==============================================================================
end start

%StatusOk = 0
%StatusGenericError = 1
%StatusInvalidParameter = 2
%StatusOutOfMemory = 3
%StatusObjectBusy = 4
%StatusInsufficientBuffer = 5
%StatusNotImplemented = 6
%StatusWin32Error = 7
%StatusWrongState = 8
%StatusAborted = 9
%StatusFileNotFound = 10
%StatusValueOverflow = 11
%StatusAccessDenied = 12
%StatusUnknownImageFormat = 13
%StatusFontFamilyNotFound = 14
%StatusFontStyleNotFound = 15
%StatusNotTrueTypeFont = 16
%StatusUnsupportedGdiplusVersion = 17
%StatusGdiplusNotInitialized = 18
%StatusPropertyNotFound = 19
%StatusPropertyNotSupported = 20


http://www.jose.it-berater.org/gdiplus/iframe/index.htm
Title: Re: Help me/ jpeg compression using masam32
Post by: Gunther on March 14, 2014, 09:15:26 PM
Hi Michael,

Quote from: MichaelW on March 14, 2014, 12:32:22 PM
http://www.jose.it-berater.org/gdiplus/iframe/index.htm

very good reference link. Thank you.

Gunther
Title: Re: Help me/ jpeg compression using masam32
Post by: hamidfarhadiyan2 on March 14, 2014, 10:14:44 PM
Michael very very thanks for help to me
You are a big man
Title: Re: Help me/ jpeg compression using masam32
Post by: vishwadt on March 15, 2014, 05:36:41 PM
thank you very much for reference link  :eusa_clap:
http://www.jose.it-berater.org/gdiplus/iframe/index.htm
Title: Re: Help me/ jpeg compression using masam32
Post by: Vortex on March 15, 2014, 09:18:33 PM
Hi hamid,

Also don't forget to check the masm32 imagine routines capable of loading .jpg images.