def test_changeSimilarBgColors_basic(self, spec1Colors, spec2Colors, expectedSpec2Color): spec1 = ImageSpec(None, isLogo=True, colors=spec1Colors) spec2 = ImageSpec(None, isLogo=True, colors=spec2Colors) imageSpecs = [spec1, spec2] util.changeSimilarBgColors(imageSpecs) self.assertEqual(spec1Colors[0], spec1.colors[0]) self.assertEqual(expectedSpec2Color, spec2.colors[0])
def test_changeSimilarBgColors_invert(self, spec1Colors, spec2Colors, expectedSpec2Color, expectedSpec2Invert, mockGetAllColors): spec1 = ImageSpec(None, isLogo=True, colors=spec1Colors, invert=True) spec2 = ImageSpec(None, isLogo=True, colors=spec2Colors, invert=True) mockGetAllColors.return_value = spec2Colors, [] imageSpecs = [spec1, spec2] util.changeSimilarBgColors(imageSpecs) self.assertEqual(True, spec1.invert) self.assertEqual(expectedSpec2Color, spec2.colors[0]) self.assertEqual(expectedSpec2Invert, spec2.invert)
def test_getAcceptableColor_analyzed(self, specColors, otherColors, analyzeColors, expected, mockAnalyze): imageSpec = ImageSpec(None, isLogo=True, colors=specColors) mockAnalyze.return_value = analyzeColors, [] outColor = util.getAcceptableColor(imageSpec, otherColors) self.assertEqual(expected, outColor)
def generateAndSaveLogoImage(ctx, logoFile, color, invert=False, index=None): imageSize = ctx.imageSize if color is None: imageSpec = ImageSpec(logoFile) override = getImageSpecOverride(ctx) imageSpec.override(override) else: imageSpec = ImageSpec(logoFile, colors=[color], invert=invert, bg='solid') compSpec = CompositeSpec(imageSize, ctx.text) teamImg = ctx.imageGenerator.generateImage(compSpec, [imageSpec]) imageFile = os.path.split(logoFile)[1] nameBase = parsing.cleanImageHints(imageFile) if color is None: imageName = os.path.splitext(imageFile)[0] else: imageName = nameBase if index is not None: imageName += f'_[{index}]' imageName += f'_{color}' if invert: imageName += 'i' imageName += '.' + ctx.config.createdImageExtension saveImage(ctx, teamImg, imageName)
def getImageSpecsForFilename(self, filePath): log.debug(f"Getting image specs for {filePath}") sportEntry = self.sportService.getSportFor(filePath) if sportEntry is None: raise ImageGenerationException( f"Unable to find a matching Sport entry for {filePath}!") filename = os.path.split(filePath)[1] (team1, team2) = parsing.teamNamesFromFilename(filename) teamNames = removeNones([team1, team2]) result = [] for team in teamNames: teamSpec = self.__imageSpecFor(sportEntry, team) if teamSpec is not None: result.append(teamSpec) if len(result) == 0: title = parsing.titleFromFilename(filePath) if title is not None: imageSpec = self.__imageSpecFor(sportEntry, title) if imageSpec is not None: imageSpec.isLogo = False result.append(imageSpec) if len(result) == 0: if sportEntry.image is not None: imageSpec = ImageSpec(sportEntry.image, False) result.append(imageSpec) elif sportEntry.logo is not None: imageSpec = ImageSpec(sportEntry.logo, True) result.append(imageSpec) else: raise ImageGenerationException( f"Unable to get any image specs for {filePath}!") return result
def __imageSpecFor(self, sportEntry, teamName): imageSpec = None if sportEntry is not None: if sportEntry.image is not None: imageSpec = ImageSpec(sportEntry.image, False) if sportEntry.imageRoot is None: if sportEntry.image is None: log.debug( f"Sport {sportEntry.name} has no configured image or imageRoot" ) else: matcher = ImageMatcher(sportEntry.imageRoot) image = matcher.findBestMatch(teamName, sportEntry.name) if image is None: log.debug(f"No image match found for {teamName}") else: imageSpec = ImageSpec(image) if sportEntry.background is not None: imageSpec.bg = sportEntry.background return imageSpec
def getImageSpecOverride(ctx): override = ImageSpec(None) if len(ctx.colors) > 0: override.colors = ctx.colors override.bg = ctx.background override.invert = ctx.invert if ctx.colorOverlay is not None: override.maskSpec = ColorOverlaySpec(ctx.colorOverlay) if ctx.stroke[0] is not None: override.strokeSpec = StrokeSpec(ctx.stroke[0], ctx.stroke[1]) return override
def test_ImageSpec_strokeSpec_filename(self): spec = ImageSpec("Team_stroke$1$000.png") self.assertEqual(1, spec.strokeSpec.size) self.assertEqual('000', spec.strokeSpec.colorHex)
def test_ImageSpec_strokeSpec_override(self): spec = ImageSpec("Team_stroke$1$000.png", strokeSpec=StrokeSpec(7, 'fff')) self.assertEqual(7, spec.strokeSpec.size) self.assertEqual('fff', spec.strokeSpec.colorHex)
def test_getAcceptableColor_basic(self, specColors, otherColors, expected): imageSpec = ImageSpec(None, isLogo=True, colors=specColors) outColor = util.getAcceptableColor(imageSpec, otherColors) self.assertEqual(expected, outColor)