From 13a505c975a54f8b1165946ff0f771748a422889 Mon Sep 17 00:00:00 2001 From: Jon Michael Aanes Date: Wed, 27 Jun 2018 13:17:50 +0200 Subject: [PATCH] Added ifunny banner --- images/banner_ifunny.png | Bin 0 -> 10737 bytes memes.lua | 59 +++++++++++++++++++++++++++++---------- 2 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 images/banner_ifunny.png diff --git a/images/banner_ifunny.png b/images/banner_ifunny.png new file mode 100644 index 0000000000000000000000000000000000000000..d917a2b19435275bee337c04f1dd0eafcb7adefc GIT binary patch literal 10737 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 literal 0 HcmV?d00001 diff --git a/memes.lua b/memes.lua index 27b8467..f22c003 100644 --- a/memes.lua +++ b/memes.lua @@ -317,11 +317,41 @@ local function add_compression_artifacts_to_image (image_filename, quality) return output_filename end +local function add_banner_to_image (image_filename, banner_filename, x_offset, background_color) + assert(type(image_filename) == 'string') + assert(type(banner_filename) == 'string') + assert(type(x_offset) == 'number') + -- + local image_img = assert(imlib.image.load(image_filename)) + local banner_img = assert(imlib.image.load(banner_filename)) + + local combi_img = imlib.image.new( image_img:get_width(), image_img:get_height() + banner_img:get_height() ) + local xpos = (0 <= x_offset) and x_offset or (combi_img:get_width() - banner_img:get_width() + x_offset) + + -- Draw + if background_color then + combi_img:draw_rectangle(0, 0, combi_img:get_width(), combi_img:get_height(), background_color) + end + flatten_onto(combi_img, image_img, 0, 0) + flatten_onto(combi_img, banner_img, xpos, image_img:get_height()) + + -- Save and free + image_img:free() + banner_img:free() + local output_filename = os.tmpname()..'.jpg' + combi_img:save(output_filename) + combi_img:free() + + return output_filename +end + local CHANCE_OF_MODIFIER = 0.3 local modifiers = { -- Compression artifacts function (image_filename) return add_compression_artifacts_to_image(image_filename, math.random(1, 20)) end, + -- iFunny banner + function (image_filename) return add_banner_to_image(image_filename, 'images/banner_ifunny.png', -7, imlib.color.new(27, 27, 27)) end, } -------------------------------------------------------------------------------- @@ -350,21 +380,22 @@ local DROSTE_EFFECT_TRIGGERS = { } local function download_and_standardize_image (image_url) - local file_extension = image_url:match '%.(%a+)$' - local url, filename = image_url, os.tmpname() - assert(type(url) == 'string' and #url > 0) - assert(type(filename) == 'string' and #filename > 0) - local success, errmsg = internet.download_file(url, filename) + local file_extension = image_url:match '%.(%a+)$' + local url, filename = image_url, os.tmpname() + assert(type(url) == 'string' and #url > 0) + assert(type(filename) == 'string' and #filename > 0) + local success, errmsg = internet.download_file(url, filename) - -- Convert svg to png - if success and url:match '%.svg$' then - local filename_2 = CONFIG.IMGGEN_PATH_OUTPUT..'topic_'..topic.topic..'.'..'png' - os.execute('convert -density "1200" -resize 400x400 "'..filename..'" "'..filename_2..'" &> /dev/null') - filename = filename_2 - end - -- + -- Convert svg to png + if success and url:match '%.svg$' then + local filename_2 = filename..'.svg' + os.execute('convert -density "1200" -resize 400x400 "'..filename..'" "'..filename_2..'" &> /dev/null') + filename = filename_2 + assert(check_file_exists(filename_2)) + end + -- - return success and filename, errmsg + return success and filename, errmsg end local function fill_in_topics_information (topics) @@ -448,7 +479,7 @@ local function generate_comparison_meme_generator (positions) local image_filename = save_img(base_img) -- Use modifiers - if math.random() < CHANCE_OF_MODIFIER then + while math.random() < CHANCE_OF_MODIFIER do image_filename = choose(modifiers)(image_filename) end