forked from mirrors/bookwyrm
Modify inner image position
This commit is contained in:
parent
22c13f639c
commit
a8ae3c9950
1 changed files with 10 additions and 13 deletions
|
@ -17,9 +17,6 @@ from bookwyrm import models, settings
|
||||||
from bookwyrm.settings import DOMAIN
|
from bookwyrm.settings import DOMAIN
|
||||||
from bookwyrm.tasks import app
|
from bookwyrm.tasks import app
|
||||||
|
|
||||||
# dev
|
|
||||||
import logging
|
|
||||||
|
|
||||||
IMG_WIDTH = settings.PREVIEW_IMG_WIDTH
|
IMG_WIDTH = settings.PREVIEW_IMG_WIDTH
|
||||||
IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT
|
IMG_HEIGHT = settings.PREVIEW_IMG_HEIGHT
|
||||||
BG_COLOR = settings.PREVIEW_BG_COLOR
|
BG_COLOR = settings.PREVIEW_BG_COLOR
|
||||||
|
@ -29,7 +26,8 @@ TRANSPARENT_COLOR = (0, 0, 0, 0)
|
||||||
|
|
||||||
margin = math.floor(IMG_HEIGHT / 10)
|
margin = math.floor(IMG_HEIGHT / 10)
|
||||||
gutter = math.floor(margin / 2)
|
gutter = math.floor(margin / 2)
|
||||||
inner_img_limits = math.floor(IMG_HEIGHT * 0.8)
|
inner_img_height = math.floor(IMG_HEIGHT * 0.8)
|
||||||
|
inner_img_width = math.floor(inner_img_height * 0.7)
|
||||||
path = Path(__file__).parent.absolute()
|
path = Path(__file__).parent.absolute()
|
||||||
font_dir = path.joinpath("static/fonts/public_sans")
|
font_dir = path.joinpath("static/fonts/public_sans")
|
||||||
|
|
||||||
|
@ -172,17 +170,16 @@ def generate_rating_layer(rating, content_width):
|
||||||
def generate_default_inner_img():
|
def generate_default_inner_img():
|
||||||
font_cover = get_font("light", size=28)
|
font_cover = get_font("light", size=28)
|
||||||
|
|
||||||
cover_width = math.floor(inner_img_limits * 0.7)
|
|
||||||
default_cover = Image.new(
|
default_cover = Image.new(
|
||||||
"RGB", (cover_width, inner_img_limits), color=DEFAULT_COVER_COLOR
|
"RGB", (inner_img_width, inner_img_height), color=DEFAULT_COVER_COLOR
|
||||||
)
|
)
|
||||||
default_cover_draw = ImageDraw.Draw(default_cover)
|
default_cover_draw = ImageDraw.Draw(default_cover)
|
||||||
|
|
||||||
text = "no image :("
|
text = "no image :("
|
||||||
text_dimensions = font_cover.getsize(text)
|
text_dimensions = font_cover.getsize(text)
|
||||||
text_coords = (
|
text_coords = (
|
||||||
math.floor((cover_width - text_dimensions[0]) / 2),
|
math.floor((inner_img_width - text_dimensions[0]) / 2),
|
||||||
math.floor((inner_img_limits - text_dimensions[1]) / 2),
|
math.floor((inner_img_height - text_dimensions[1]) / 2),
|
||||||
)
|
)
|
||||||
default_cover_draw.text(text_coords, text, font=font_cover, fill="white")
|
default_cover_draw.text(text_coords, text, font=font_cover, fill="white")
|
||||||
|
|
||||||
|
@ -195,7 +192,7 @@ def generate_preview_image(
|
||||||
# Cover
|
# Cover
|
||||||
try:
|
try:
|
||||||
inner_img_layer = Image.open(picture)
|
inner_img_layer = Image.open(picture)
|
||||||
inner_img_layer.thumbnail((inner_img_limits, inner_img_limits), Image.ANTIALIAS)
|
inner_img_layer.thumbnail((inner_img_width, inner_img_height), Image.ANTIALIAS)
|
||||||
color_thief = ColorThief(picture)
|
color_thief = ColorThief(picture)
|
||||||
dominant_color = color_thief.get_color(quality=1)
|
dominant_color = color_thief.get_color(quality=1)
|
||||||
except:
|
except:
|
||||||
|
@ -230,7 +227,9 @@ def generate_preview_image(
|
||||||
img = Image.new("RGBA", (IMG_WIDTH, IMG_HEIGHT), color=image_bg_color)
|
img = Image.new("RGBA", (IMG_WIDTH, IMG_HEIGHT), color=image_bg_color)
|
||||||
|
|
||||||
# Contents
|
# Contents
|
||||||
content_x = margin + inner_img_layer.width + gutter
|
inner_img_x = margin + inner_img_width - inner_img_layer.width
|
||||||
|
inner_img_y = math.floor((IMG_HEIGHT - inner_img_layer.height) / 2)
|
||||||
|
content_x = margin + inner_img_width + gutter
|
||||||
content_width = IMG_WIDTH - content_x - margin
|
content_width = IMG_WIDTH - content_x - margin
|
||||||
|
|
||||||
contents_layer = Image.new(
|
contents_layer = Image.new(
|
||||||
|
@ -266,10 +265,8 @@ def generate_preview_image(
|
||||||
if contents_y < margin:
|
if contents_y < margin:
|
||||||
contents_y = margin
|
contents_y = margin
|
||||||
|
|
||||||
cover_y = math.floor((IMG_HEIGHT - inner_img_layer.height) / 2)
|
|
||||||
|
|
||||||
# Composite layers
|
# Composite layers
|
||||||
img.paste(inner_img_layer, (margin, cover_y), inner_img_layer.convert("RGBA"))
|
img.paste(inner_img_layer, (inner_img_x, inner_img_y), inner_img_layer.convert("RGBA"))
|
||||||
img.alpha_composite(contents_layer, (content_x, contents_y))
|
img.alpha_composite(contents_layer, (content_x, contents_y))
|
||||||
|
|
||||||
return img
|
return img
|
||||||
|
|
Loading…
Reference in a new issue