def test_addDropShadowComplex_BGBlue(): ''' Manual Check Desired Output: A square image 512x512 pixels with a black shadow to the bottom right on a blue background ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowComplex_BGBlue.png", imageEdit.addDropShadowComplex(IMAGE, 5, 50, [50, 50], "#0000ff", "#000000"))
def test_addDropShadowComplex_ShadowGreen(): ''' Manual Check Desired Output: A square image 512x512 pixels with a green shadow to the bottom right on a red background ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowComplex_ShadowGreen.png", imageEdit.addDropShadowComplex(IMAGE, 5, 50, [50, 50], "#ff0000", "#00ff00"))
def test_addDropShadowComplex_Border100(): ''' Manual Check Desired Output: A square image 512x512 pixels with a black shadow to the bottom right on a red background with some additional padding ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowComplex_Border100.png", imageEdit.addDropShadowComplex(IMAGE, 5, 100, [50, 50], "#ff0000", "#000000"))
def test_addDropShadowComplex_Iterations0(): ''' Manual Check Desired Output: A square image 512x512 pixels with a black blocky shadow to the bottom right on a red background ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowComplex_Iterations0.png", imageEdit.addDropShadowComplex(IMAGE, 0, 50, [50, 50], "#ff0000", "#000000"))
def test_addDropShadowSimple_bottomRight(): ''' Manual Check Desired Output: A square image 512x512 pixels with a shadow 50 px to the bottom right ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowSimple_bottomRight.png", imageEdit.addDropShadowSimple(IMAGE, [50, 50]))
def test_addDropShadowSimple_topLeft(): ''' Manual Check Desired Output: A square image 512x512 pixels with a shadow 50 px to the top left ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowSimple_topLeft.png", imageEdit.addDropShadowSimple(IMAGE, [-50, -50]))
def test_saveImage(): imageEdit.saveImage(OUTPUT + "/test_saveImage_NotOptimised.png", IMAGE, False) imageEdit.saveImage(OUTPUT + "/test_saveImage_Optimised.png", IMAGE) # PNG-24 should be 3x PNG-8 so Optimised = 0.33 * NotOptimised # Looks like this doesn't work as well. More like 0.66 * NotOptimised NotOptimised = os.path.getsize(OUTPUT + "/test_saveImage_NotOptimised.png") Optimised = os.path.getsize(OUTPUT + "/test_saveImage_Optimised.png") assert(Optimised < NotOptimised * 0.67)
def test_convertBlackAndWhite_edges(): imageEdit.saveImage(OUTPUT+ "/test_convertBlackAndWhite_edges.png", imageEdit.convertBlackAndWhite(IMAGE, "edges"))
def test_convertBlackAndWhite_filterDarker(): imageEdit.saveImage(OUTPUT+ "/test_convertBlackAndWhite_filter-darker.png", imageEdit.convertBlackAndWhite(IMAGE, "filter-darker"))
def test_convertBlackAndWhite_foreground(): imageEdit.saveImage(OUTPUT+ "/test_convertBlackAndWhite_foreground.png", imageEdit.convertBlackAndWhite(IMAGE, "foreground"))
def test_roundCornersPercentAntiAlias(): imageEdit.saveImage(OUTPUT+ "/test_roundCornersPercentAntiAlias.png", imageEdit.roundCornersAntiAlias(IMAGE, "50%"))
def test_uncrop(): ''' Manual Check Desired Output: An 'uncropped' image of a field ''' imageEdit.saveImage(OUTPUT + "/test_uncrop.png", imageEdit.uncrop(imageEdit.openImage(INPUT + "/test_field.png"), 64))
def test_roundCorners_0(): ''' Manual Check Desired Output: A square image 512x512 pixels ''' imageEdit.saveImage(OUTPUT+ "/test_roundCorners_0.png", imageEdit.roundCorners(IMAGE, 0))
if __name__ == "__main__": # pragma: no cover # Image in should be 512px images = imageEdit.openImagesInDir(THISDIR + "/input/*") for imageRef in images: fileName, squareImage = imageRef fileNameParts = fileName.split(os.sep) fileName = fileNameParts[len(fileNameParts) - 1] imageEdit.logPrint(fileName, "bold") outputDir = THISDIR + "/output/" + fileName storeDir = outputDir + "/store" pwaDir = outputDir + "/pwa" # Create a mask image and then convert to icon if (imageEdit.getImageDesc(squareImage) == "mask"): imageEdit.saveImage(pwaDir + "/mask.png", imageEdit.resizeImageSquare(squareImage, 512)) squareImage = imageEdit.removeImagePadding(squareImage, 64) roundImage = imageEdit.roundCornersAntiAlias(squareImage, 256) squircleImage = imageEdit.roundCornersAntiAlias( squareImage, 102) # Google Play Rounding ''' Store Images ''' # store-windows - Size 300px imageEdit.saveImage( storeDir + "/store-windows.png", imageEdit.resizeImageSquare(squareImage, "0.5859375x")) # store-google-play - Size 512, png32 imageEdit.saveImage(storeDir + "/store-google-play.png", squareImage,
def test_addDropShadowComplex_Border0(): ''' Manual Check Desired Output: A square image 512x512 pixels shadow is not smooth at edge ''' imageEdit.saveImage(OUTPUT+ "/test_addDropShadowComplex_Border0.png", imageEdit.addDropShadowComplex(IMAGE, 5, 0, [50, 50], "#ff0000", "#000000"))
def test_roundCorners_256(): ''' Manual Check Desired Output: A circular image 512x512 pixels ''' imageEdit.saveImage(OUTPUT+ "/test_roundCorners_256.png", imageEdit.roundCorners(IMAGE, 256))
def test_addText_under16(): imageEdit.saveImage(OUTPUT+ "/test_addText_under16.png", imageEdit.addText(IMAGE, "01234"))
for imageRef in images: fileName, squareImage = imageRef fileNameParts = fileName.split(os.sep) fileName = fileNameParts[len(fileNameParts)-1] imageEdit.logPrint(fileName, "bold") outputDir = THISDIR + "/output/" + fileName + "/proj-icon" # Proj-icon does not want to be a mask if (imageEdit.getImageDesc(squareImage) == "mask"): textName = fileName.split('.')[0] imageEdit.saveImage(outputDir + "/name.png", imageEdit.addDropShadowSimple( imageEdit.roundCornersAntiAlias( imageEdit.resizeImageSquare( imageEdit.addText(squareImage, textName), "0.5x"), 64), [-10, 10]) ) squareImage = imageEdit.removeImagePadding(squareImage, 64) roundImage = imageEdit.roundCornersAntiAlias(squareImage, 256) squircleImage = imageEdit.roundCornersAntiAlias(squareImage, 102) # Google Play Rounding # store-google-play-raster - Drop shadow, radius 20% (102,51) googlePlay = imageEdit.addDropShadowSimple(squircleImage, [-10, 10]) imageEdit.saveImage(outputDir + "/proj-icon.png", imageEdit.resizeImageSquare(googlePlay, 256))
def test_addText_over16(): imageEdit.saveImage(OUTPUT+ "/test_addText_over16.png", imageEdit.addText(IMAGE, "012345689ABCDEFG"))
def test_roundCornersPercent_50(): ''' Manual Check Desired Output: A circular image 512x512 pixels ''' imageEdit.saveImage(OUTPUT+ "/test_roundCornersPercent_50.png", imageEdit.roundCorners(IMAGE, "50%"))
"PWA.HappyShibe/": ["index.html"], "PWA.PasswordGen/": ["index.html", "advanced.html"], } scripts = [ "const rootStylesAuto = document.styleSheets[0].cssRules[0].style; const darkStylesAuto = document.styleSheets[0].cssRules[1].cssRules[0].style; rootStylesAuto.setProperty(\"--var-c-primary\", \"#FAFAFA\"); rootStylesAuto.setProperty(\"--var-c-secondary\", \"#EAEAEB\"); rootStylesAuto.setProperty(\"--var-c-text\", \"#383A42\"); darkStylesAuto.setProperty(\"--var-c-primary\", \"#FAFAFA\"); darkStylesAuto.setProperty(\"--var-c-secondary\", \"#EAEAEB\"); darkStylesAuto.setProperty(\"--var-c-text\", \"#383A42\"); rootStylesAuto.setProperty(\"--var-c-black\", \"0\")", "const rootStylesAuto = document.styleSheets[0].cssRules[0].style; const darkStylesAuto = document.styleSheets[0].cssRules[1].cssRules[0].style; rootStylesAuto.setProperty(\"--var-c-primary\", \"#181A1F\"); rootStylesAuto.setProperty(\"--var-c-secondary\", \"#282C34\"); rootStylesAuto.setProperty(\"--var-c-text\", \"#ABB2BF\"); darkStylesAuto.setProperty(\"--var-c-primary\", \"#181A1F\"); darkStylesAuto.setProperty(\"--var-c-secondary\", \"#282C34\"); darkStylesAuto.setProperty(\"--var-c-text\", \"#ABB2BF\"); rootStylesAuto.setProperty(\"--var-c-black\", \"0\")", "const rootStylesAuto = document.styleSheets[0].cssRules[0].style; const darkStylesAuto = document.styleSheets[0].cssRules[1].cssRules[0].style; rootStylesAuto.setProperty(\"--var-c-primary\", \"#000000\"); rootStylesAuto.setProperty(\"--var-c-secondary\", \"#000000\"); rootStylesAuto.setProperty(\"--var-c-text\", \"#ABB2BF\"); darkStylesAuto.setProperty(\"--var-c-primary\", \"#181A1F\"); darkStylesAuto.setProperty(\"--var-c-secondary\", \"#282C34\"); darkStylesAuto.setProperty(\"--var-c-text\", \"#ABB2BF\"); rootStylesAuto.setProperty(\"--var-c-black\", \"1\")" ] for project in projects: pages = projects[project] for index, script in enumerate(scripts): imageEdit.saveImage( outputDir + project + "themes/theme-" + str(index) + ".png", imageEdit.resizeImage( imageGrab.grabWebpage(baseUrl + project + pages[0], (375, 667), evalJs=script), "2x", "2x")) for index, page in enumerate(pages): imageEdit.saveImage( outputDir + project + "mobile/screenshot-" + str(index) + ".png", imageEdit.resizeImage( imageGrab.grabWebpage(baseUrl + project + page, (375, 667), evalJs=scripts[0]), "2x", "2x")) imageEdit.saveImage( outputDir + project + "desktop/screenshot-" + str(index) + ".png", imageGrab.grabWebpage(baseUrl + project + page, (1920, 1080), evalJs=scripts[0]))
def test_roundCornersAntiAlias(): imageEdit.saveImage(OUTPUT+ "/test_roundCornersAntiAlias.png", imageEdit.roundCornersAntiAlias(IMAGE, 256))
action="store_true") args = parser.parse_args() if args.batch: images = imageEdit.openImagesInDir(THISDIR + "/input/*") print(images) for imageRef in images: fileName, image = imageRef fileNameParts = fileName.split("\\") fileName = fileNameParts[len(fileNameParts) - 1] print(fileName) if args.radius is not None: image = imageEdit.roundCorners(image, int(args.radius)) else: image = imageEdit.roundCorners(image, int(image.width / 2)) imageEdit.saveImage(THISDIR + "/output/out-" + fileName, image) else: im = imageEdit.openImage(THISDIR + "/" + args.image) if args.radius is not None: im = imageEdit.roundCorners(im, int(args.radius)) else: im = imageEdit.roundCorners(im, int(im.width / 2)) if args.output is not None: outFileName = args.output else: outFileName = args.image imageEdit.saveImage(THISDIR + "/" + outFileName, im)
def test_cropCentre(): ''' Manual Check Desired Output: A square image 256x256 pixels ''' imageEdit.saveImage(OUTPUT+ "/test_cropCentre.png", imageEdit.cropCentre(IMAGE, 256, 256))