Skip to content

Instantly share code, notes, and snippets.

@tmyt
Created May 12, 2015 13:31
Show Gist options
  • Save tmyt/69ae406be4c97668bc4d to your computer and use it in GitHub Desktop.
Save tmyt/69ae406be4c97668bc4d to your computer and use it in GitHub Desktop.
; scale windows store apps visual assets to each scale factor.
(define (uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight inScaleFactor)
(define w (/ (* inWidth inScaleFactor) 100))
(define h (/ (* inHeight inScaleFactor) 100))
(define img (car (gimp-image-duplicate inImage)))
(define layer (car (vector->list (car (cdr (gimp-image-get-layers img))))))
(define outFile (string-append inSaveTo "/" inBaseName ".scale-" (number->string inScaleFactor) ".png"))
(gimp-image-scale img w h)
(file-png-save2 1 img layer outFile outFile 0 9 1 0 0 0 0 0 0)
)
(define (uwp-scale-image-process-scale inBaseName inSaveTo inImage inWidth inHeight inScalePC inScaleWP inScaleUWP)
; scale-80 (pc)
(if (= (or inScalePC) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 80))
; scale-100 (all)
(if (= (or inScalePC inScaleWP inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 100))
; scale-125 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 125))
; scale-140 (pc,wp)
(if (= (or inScalePC inScaleWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 140))
; scale-150 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 150))
; scale-180 (pc)
(if (= (or inScalePC) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 180))
; scale-200 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 200))
; scale-240 (wp)
(if (= (or inScaleWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 240))
; scale-250 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 250))
; scale-300 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 300))
; scale-400 (uwp)
(if (= (or inScaleUWP) 1)
(uwp-scale-image-duplicate-scale-export inSaveTo inBaseName inImage inWidth inHeight 400))
)
(define (uwp-scale-image inImage inSaveTo inAssetType inScalePC inScaleWP inScaleUWP)
(case inAssetType
((0) (uwp-scale-image-process-scale "Logo" inSaveTo inImage 150 150 inScalePC inScaleWP inScaleUWP))
((1) (uwp-scale-image-process-scale "Square70x70Logo" inSaveTo inImage 70 70 inScalePC inScaleWP inScaleUWP))
((2) (uwp-scale-image-process-scale "Wide310x150Logo" inSaveTo inImage 310 150 inScalePC inScaleWP inScaleUWP))
((3) (uwp-scale-image-process-scale "Square310x310Logo" inSaveTo inImage 310 310 inScalePC inScaleWP inScaleUWP))
((4) (uwp-scale-image-process-scale "Square71x71Logo" inSaveTo inImage 71 71 inScalePC inScaleWP inScaleUWP))
((5) (uwp-scale-image-process-scale "Square44x44Logo" inSaveTo inImage 44 44 inScalePC inScaleWP inScaleUWP))
((6) (uwp-scale-image-process-scale "Square30x30Logo" inSaveTo inImage 30 30 inScalePC inScaleWP inScaleUWP))
((7) (uwp-scale-image-process-scale "StoreLogo" inSaveTo inImage 50 50 inScalePC inScaleWP inScaleUWP))
((8) (uwp-scale-image-process-scale "BadgeLogo" inSaveTo inImage 24 24 inScalePC inScaleWP inScaleUWP))
((9) (uwp-scale-image-process-scale "SplashScreen-pc" inSaveTo inImage 620 300 inScalePC inScaleWP inScaleUWP))
((10) (uwp-scale-image-process-scale "SplashScreen-wp" inSaveTo inImage 480 800 inScalePC inScaleWP inScaleUWP))
)
)
(script-fu-register
"uwp-scale-image" ;func name
"Build scaled assets ..." ;menu label
"" ;description
"" ;author
"" ;copyright notice
"" ;date created
"*" ;image type that the script works on
SF-IMAGE "Image" 0
SF-DIRNAME "Save to..." "/"
SF-OPTION "Target" '("Logo" "Square70x70Logo" "Wide310x150Logo" "Square310x310Logo" "Square71x71Logo" "Square44x44Logo" "Square30x30Logo" "StoreLogo" "BadgeLogo" "SplashScreen-pc" "SplashScreen-wp")
SF-TOGGLE "Windows 8.x" FALSE
SF-TOGGLE "Windows Phone 8.x" FALSE
SF-TOGGLE "Windows 10.x" FALSE
)
(script-fu-menu-register "uwp-scale-image" "<Image>/*WindowsApp")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment