1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-21 09:38:01 +02:00

Doc: Automatic generation of responsive images

This commit is contained in:
Laurent Cozic 2021-07-19 14:37:59 +01:00
parent ea5a296d1f
commit d4cdebafeb
14 changed files with 89 additions and 18 deletions

View File

@ -1662,6 +1662,9 @@ packages/tools/buildServerDocker.js.map
packages/tools/generate-database-types.d.ts packages/tools/generate-database-types.d.ts
packages/tools/generate-database-types.js packages/tools/generate-database-types.js
packages/tools/generate-database-types.js.map packages/tools/generate-database-types.js.map
packages/tools/generate-images.d.ts
packages/tools/generate-images.js
packages/tools/generate-images.js.map
packages/tools/lerna-add.d.ts packages/tools/lerna-add.d.ts
packages/tools/lerna-add.js packages/tools/lerna-add.js
packages/tools/lerna-add.js.map packages/tools/lerna-add.js.map

3
.gitignore vendored
View File

@ -1647,6 +1647,9 @@ packages/tools/buildServerDocker.js.map
packages/tools/generate-database-types.d.ts packages/tools/generate-database-types.d.ts
packages/tools/generate-database-types.js packages/tools/generate-database-types.js
packages/tools/generate-database-types.js.map packages/tools/generate-database-types.js.map
packages/tools/generate-images.d.ts
packages/tools/generate-images.js
packages/tools/generate-images.js.map
packages/tools/lerna-add.d.ts packages/tools/lerna-add.d.ts
packages/tools/lerna-add.js packages/tools/lerna-add.js
packages/tools/lerna-add.js.map packages/tools/lerna-add.js.map

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

View File

@ -379,6 +379,10 @@ p,
margin-top: 40px; margin-top: 40px;
} }
#top-section-img img {
width: 100%;
}
.main-content { .main-content {
flex: 1; flex: 1;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 MiB

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -56,17 +56,19 @@
<a href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Sign up with Joplin Cloud</a> <a href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Sign up with Joplin Cloud</a>
{{/showJoplinCloudLinks}} {{/showJoplinCloudLinks}}
</p> </p>
<img
srcset="
{{imageBaseUrl}}/home-top-img.png 2388w,
{{imageBaseUrl}}/home-top-img-2x.png 4820w
"
src="{{imageBaseUrl}}/home-top-img.png" <picture class="img-fluid img-center" id="top-section-img">
alt="" <source type="image/webp" srcset="
class="img-fluid img-center" {{imageBaseUrl}}/home-top-img-4x.webp 4820w,
id="top-section-img" {{imageBaseUrl}}/home-top-img-2x.webp 2388w,
/> {{imageBaseUrl}}/home-top-img.webp 1205w
">
<source type="image/png" srcset="
{{imageBaseUrl}}/home-top-img-2x.png 2388w,
{{imageBaseUrl}}/home-top-img.png 1205w
">
<img id="top-section-img-img" src="{{imageBaseUrl}}/home-top-img-2x.png">
</picture>
</div> </div>
</div> </div>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -1,10 +1,24 @@
const dirname = require('path').dirname; import * as fs from 'fs-extra';
import { dirname } from 'path';
import { execCommand } from './tool-utils';
import { fileExtension } from '@joplin/lib/path-utils';
const sharp = require('sharp'); const sharp = require('sharp');
const fs = require('fs-extra');
const { execCommand } = require('./tool-utils.js');
const { fileExtension } = require('@joplin/lib/path-utils');
const sources = [ interface Source {
id: number;
name: string;
}
interface Operation {
source: number;
dest: string;
width?: number;
height?: number;
iconWidth?: number;
iconHeight?: number;
}
const sources: Source[] = [
{ {
id: 1, id: 1,
name: 'Square_1024x1024.png', name: 'Square_1024x1024.png',
@ -33,16 +47,20 @@ const sources = [
id: 7, id: 7,
name: 'RoundedCornersMac_1024x1024.png', name: 'RoundedCornersMac_1024x1024.png',
}, },
{
id: 8,
name: 'WebsiteTopImage.png',
},
]; ];
function sourceById(id) { function sourceById(id: number) {
for (const s of sources) { for (const s of sources) {
if (s.id === id) return s; if (s.id === id) return s;
} }
throw new Error(`Invalid source ID: ${id}`); throw new Error(`Invalid source ID: ${id}`);
} }
const operations = [ const operations: Operation[] = [
// ============================================================================ // ============================================================================
// iOS icons // iOS icons
@ -279,6 +297,41 @@ const operations = [
iconWidth: 46, iconWidth: 46,
iconHeight: 46, iconHeight: 46,
}, },
// ============================================================================
// Website images
// ============================================================================
{
source: 8,
dest: 'Assets/WebsiteAssets/images/home-top-img-4x.webp',
width: 4820,
height: 2938,
},
{
source: 8,
dest: 'Assets/WebsiteAssets/images/home-top-img-2x.png',
width: 2388,
height: 1456,
},
{
source: 8,
dest: 'Assets/WebsiteAssets/images/home-top-img-2x.webp',
width: 2388,
height: 1456,
},
{
source: 8,
dest: 'Assets/WebsiteAssets/images/home-top-img.png',
width: 1205,
height: 734,
},
{
source: 8,
dest: 'Assets/WebsiteAssets/images/home-top-img.webp',
width: 1205,
height: 734,
},
]; ];
async function main() { async function main() {
@ -317,7 +370,13 @@ async function main() {
if (destExt === 'jpg') { if (destExt === 'jpg') {
s.jpeg({ quality: 90 }); s.jpeg({ quality: 90 });
} else if (destExt === 'png') { } else if (destExt === 'png') {
s.png(); s.png({
compressionLevel: 9,
});
} else if (destExt === 'webp') {
s.webp({
// quality: 90,
});
} else { } else {
throw new Error(`Unsupported extension: ${destExt}`); throw new Error(`Unsupported extension: ${destExt}`);
} }