Using thumbnail size instead of original photo size in image tags.

This commit is contained in:
DebaucheryLibrarian 2021-03-18 04:36:04 +01:00
parent 0a92586c53
commit 862a29bb6e
10 changed files with 95 additions and 5 deletions

View File

@ -17,6 +17,8 @@
:src="getPath(actor.avatar, 'thumbnail')" :src="getPath(actor.avatar, 'thumbnail')"
:style="{ 'background-image': getBgPath(actor.avatar, 'lazy') }" :style="{ 'background-image': getBgPath(actor.avatar, 'lazy') }"
:title="actor.avatar.credit && `© ${actor.avatar.credit}`" :title="actor.avatar.credit && `© ${actor.avatar.credit}`"
:width="actor.avatar.thumbnailWidth"
:height="actor.avatar.thumbnailHeight"
loading="lazy" loading="lazy"
class="avatar photo" class="avatar photo"
@load="$emit('load', $event)" @load="$emit('load', $event)"
@ -35,6 +37,8 @@
:src="getPath(photo, 'thumbnail')" :src="getPath(photo, 'thumbnail')"
:style="{ 'background-image': getBgPath(photo, 'lazy') }" :style="{ 'background-image': getBgPath(photo, 'lazy') }"
:title="`© ${photo.credit || photo.entity.name}`" :title="`© ${photo.credit || photo.entity.name}`"
:width="photo.thumbnailWidth"
:height="photo.thumbnailHeight"
loading="lazy" loading="lazy"
class="photo" class="photo"
@load="$emit('load', $event)" @load="$emit('load', $event)"

View File

@ -28,8 +28,8 @@
<img <img
:src="getPath(item, 'thumbnail', { local })" :src="getPath(item, 'thumbnail', { local })"
:style="{ 'background-image': `url('${getPath(item, 'lazy', { local })}')` }" :style="{ 'background-image': `url('${getPath(item, 'lazy', { local })}')` }"
:width="item.width" :width="item.thumbnailWidth"
:height="item.height" :height="item.thumbnailHeight"
:title="item.title" :title="item.title"
loading="lazy" loading="lazy"
class="item image" class="item image"

View File

@ -13,8 +13,8 @@
:src="getPath(photo, 'thumbnail', { local: true })" :src="getPath(photo, 'thumbnail', { local: true })"
:style="{ 'background-image': `url(${getPath(photo, 'lazy', { local: true })})` }" :style="{ 'background-image': `url(${getPath(photo, 'lazy', { local: true })})` }"
:alt="photo.comment" :alt="photo.comment"
:width="photo.width" :width="photo.thumbnailWidth"
:height="photo.height" :height="photo.thumbnailHeight"
class="photo" class="photo"
@load="$emit('load', $event)" @load="$emit('load', $event)"
> >

View File

@ -94,6 +94,10 @@ function initActorActions(store, router) {
path path
thumbnail thumbnail
lazy lazy
width
height
thumbnailWidth
thumbnailHeight
hash hash
comment comment
credit credit
@ -126,6 +130,10 @@ function initActorActions(store, router) {
path path
thumbnail thumbnail
lazy lazy
width
height
thumbnailWidth
thumbnailHeight
hash hash
isS3 isS3
comment comment

View File

@ -110,6 +110,8 @@ const releasePosterFragment = `
thumbnail thumbnail
width width
height height
thumbnailWidth
thumbnailHeight
lazy lazy
isS3 isS3
comment comment
@ -133,6 +135,8 @@ const releaseCoversFragment = `
thumbnail thumbnail
width width
height height
thumbnailWidth
thumbnailHeight
lazy lazy
isS3 isS3
comment comment
@ -156,6 +160,8 @@ const releasePhotosFragment = `
thumbnail thumbnail
width width
height height
thumbnailWidth
thumbnailHeight
lazy lazy
isS3 isS3
comment comment

View File

@ -109,6 +109,10 @@ function initReleasesActions(store, router) {
path path
thumbnail thumbnail
lazy lazy
width
height
thumbnailWidth
thumbnailHeight
isS3 isS3
sfw: sfwMedia { sfw: sfwMedia {
id id
@ -167,6 +171,10 @@ function initReleasesActions(store, router) {
id id
path path
thumbnail thumbnail
width
height
thumbnailWidth
thumbnailHeight
lazy lazy
isS3 isS3
} }
@ -177,6 +185,10 @@ function initReleasesActions(store, router) {
path path
thumbnail thumbnail
lazy lazy
width
height
thumbnailWidth
thumbnailHeight
isS3 isS3
} }
} }
@ -185,6 +197,10 @@ function initReleasesActions(store, router) {
id id
path path
thumbnail thumbnail
width
height
thumbnailWidth
thumbnailHeight
lazy lazy
isS3 isS3
} }
@ -212,6 +228,10 @@ function initReleasesActions(store, router) {
path path
thumbnail thumbnail
lazy lazy
width
height
thumbnailWidth
thumbnailHeight
isS3 isS3
comment comment
sfw: sfwMedia { sfw: sfwMedia {

View File

@ -41,6 +41,8 @@ function initTagsActions(store, _router) {
path path
width width
height height
thumbnailWidth
thumbnailHeight
comment comment
entity { entity {
id id
@ -73,6 +75,8 @@ function initTagsActions(store, _router) {
path path
width width
height height
thumbnailWidth
thumbnailHeight
comment comment
entity { entity {
id id
@ -166,6 +170,8 @@ function initTagsActions(store, _router) {
lazy lazy
width width
height height
thumbnailWidth
thumbnailHeight
entity { entity {
id id
name name

43
src/web/plugins/media.js Normal file
View File

@ -0,0 +1,43 @@
'use strict';
const config = require('config');
const { makeExtendSchemaPlugin, gql } = require('graphile-utils');
const schemaExtender = makeExtendSchemaPlugin(_build => ({
typeDefs: gql`
extend type Media {
thumbnailWidth: Int @requires(columns: ["width", "height"])
thumbnailHeight: Int @requires(columns: ["height", "width"])
}
`,
resolvers: {
Media: {
thumbnailWidth(parent, _args, _context, _info) {
if (!parent.width || !parent.height) {
return null;
}
if (parent.height <= config.media.thumbnailSize) {
// thumbnails aren't upscaled
return parent.width;
}
return Math.round(parent.width / (parent.height / config.media.thumbnailSize));
},
thumbnailHeight(parent, _args, _context, _info) {
if (!parent.width || !parent.height) {
return null;
}
if (parent.height <= config.media.thumbnailSize) {
// thumbnails aren't upscaled
return parent.height;
}
return config.media.thumbnailSize;
},
},
},
}));
module.exports = [schemaExtender];

View File

@ -3,9 +3,11 @@
const ActorPlugins = require('./actors'); const ActorPlugins = require('./actors');
const SitePlugins = require('./sites'); const SitePlugins = require('./sites');
// const ReleasePlugins = require('./releases'); // const ReleasePlugins = require('./releases');
const MediaPlugins = require('./media');
module.exports = { module.exports = {
ActorPlugins, ActorPlugins,
SitePlugins, SitePlugins,
ReleasePlugins: [], ReleasePlugins: [],
MediaPlugins,
}; };

View File

@ -8,7 +8,7 @@ const PgConnectionFilterPlugin = require('postgraphile-plugin-connection-filter'
const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector'); const PgSimplifyInflectorPlugin = require('@graphile-contrib/pg-simplify-inflector');
const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related'); const PgOrderByRelatedPlugin = require('@graphile-contrib/pg-order-by-related');
const { ActorPlugins, SitePlugins, ReleasePlugins } = require('./plugins/plugins'); const { ActorPlugins, SitePlugins, ReleasePlugins, MediaPlugins } = require('./plugins/plugins');
const connectionString = `postgres://${config.database.query.user}:${config.database.query.password}@${config.database.query.host}:5432/${config.database.query.database}`; const connectionString = `postgres://${config.database.query.user}:${config.database.query.password}@${config.database.query.host}:5432/${config.database.query.database}`;
@ -42,6 +42,7 @@ module.exports = postgraphile(
...ActorPlugins, ...ActorPlugins,
...SitePlugins, ...SitePlugins,
...ReleasePlugins, ...ReleasePlugins,
...MediaPlugins,
], ],
pgSettings, pgSettings,
}, },