1
1
import * as Jimp from "jimp" ;
2
2
import * as Color from "color" ;
3
3
import { exported } from "../../common/decorators" ;
4
+ import { AssetConstants } from '../../constants' ;
4
5
5
6
export const enum Operations {
6
7
OverlayWith = "overlayWith" ,
@@ -39,12 +40,12 @@ export class AssetsGenerationService implements IAssetsGenerationService {
39
40
const assetsStructure = await this . $projectDataService . getAssetsStructure ( generationData ) ;
40
41
41
42
const assetItems = _ ( assetsStructure )
42
- . filter ( ( assetGroup : IAssetGroup , platform : string ) => {
43
- return ! generationData . platform || platform . toLowerCase ( ) === generationData . platform . toLowerCase ( ) ;
44
- } )
43
+ . filter ( ( assetGroup : IAssetGroup , platform : string ) =>
44
+ ! generationData . platform || platform . toLowerCase ( ) === generationData . platform . toLowerCase ( )
45
+ )
45
46
. map ( ( assetGroup : IAssetGroup ) =>
46
47
_ . filter ( assetGroup , ( assetSubGroup : IAssetSubGroup , imageTypeKey : string ) =>
47
- propertiesToEnumerate . indexOf ( imageTypeKey ) !== - 1 && ! assetSubGroup [ imageTypeKey ]
48
+ assetSubGroup && propertiesToEnumerate . indexOf ( imageTypeKey ) !== - 1
48
49
)
49
50
)
50
51
. flatten < IAssetSubGroup > ( )
@@ -55,20 +56,34 @@ export class AssetsGenerationService implements IAssetsGenerationService {
55
56
56
57
for ( const assetItem of assetItems ) {
57
58
const operation = assetItem . resizeOperation || Operations . Resize ;
58
- const scale = assetItem . scale || 0.8 ;
59
+ let tempScale : number = null ;
60
+ if ( assetItem . scale ) {
61
+ if ( _ . isNumber ( assetItem . scale ) ) {
62
+ tempScale = assetItem . scale ;
63
+ } else {
64
+ const splittedElements = `${ assetItem . scale } ` . split ( AssetConstants . sizeDelimiter ) ;
65
+ tempScale = splittedElements && splittedElements . length && splittedElements [ 0 ] && + splittedElements [ 0 ] ;
66
+ }
67
+ }
68
+
69
+ const scale = tempScale || AssetConstants . defaultScale ;
70
+
59
71
const outputPath = assetItem . path ;
72
+ const width = assetItem . width * scale ;
73
+ const height = assetItem . height * scale ;
60
74
61
75
switch ( operation ) {
62
76
case Operations . OverlayWith :
63
- const imageResize = Math . round ( Math . min ( assetItem . width , assetItem . height ) * scale ) ;
77
+ const overlayImageScale = assetItem . overlayImageScale || AssetConstants . defaultOverlayImageScale ;
78
+ const imageResize = Math . round ( Math . min ( width , height ) * overlayImageScale ) ;
64
79
const image = await this . resize ( generationData . imagePath , imageResize , imageResize ) ;
65
- await this . generateImage ( generationData . background , assetItem . width , assetItem . height , outputPath , image ) ;
80
+ await this . generateImage ( generationData . background , width , height , outputPath , image ) ;
66
81
break ;
67
82
case Operations . Blank :
68
- await this . generateImage ( generationData . background , assetItem . width , assetItem . height , outputPath ) ;
83
+ await this . generateImage ( generationData . background , width , height , outputPath ) ;
69
84
break ;
70
85
case Operations . Resize :
71
- const resizedImage = await this . resize ( generationData . imagePath , assetItem . width , assetItem . height ) ;
86
+ const resizedImage = await this . resize ( generationData . imagePath , width , height ) ;
72
87
resizedImage . write ( outputPath ) ;
73
88
break ;
74
89
default :
0 commit comments