Giter Site home page Giter Site logo

expose's Introduction

Exposé

A simple static site generator for photoessays

Intro

If you're into photography, you probably have folders of images and videos like this:

a bunch of images

Expose is a Bash script that turns those images and videos into a photoessay similar to jack.ventures or jack.works (my personal blogs)

If you're not a fan of that look, a Medium-style theme is included

tested on Windows/Cygwin, OSX, and should be fine on Linux

Installation

The only dependency is Imagemagick. For videos FFmpeg is also required.

Download the repo and alias the script

alias expose=/script/location/expose.sh

for permanent use add this line to your ~/.profiles, ~/.bashrc etc depending on system

Basic usage

cd ~/folderofimages
expose

The script operates on your current working directory, and outputs a _site directory.

Configuration

Site title, theme, jpeg quality and other config values can be edited in expose.sh itself, you can also create _config.sh in the top level of your project, eg:

site_title="Alternate Site Title"
theme_dir="theme2"
social_button=false
backgroundcolor="#ffffff"

Flags

expose -d

The -d flag enables draft mode, where only a single low resolution is encoded. This can be used for a quick preview or for layout purposes.

Generated images and videos are not overwritten, to do a completely clean build delete the existing _site directory first.

Adding text

The text associated with each image is read from any text file with the same filename as the image, eg:

images and text files

Sorting

Images are sorted by alphabetical order. To arbitrarily order images, add a numerical prefix

Organization

You can put images in folders to organize them. The folders can be nested any number of times, and are also sorted alphabetically. The folder structure is used to generate a nested html menu.

To arbitrarily order folders, add a numerical prefix to the folder name. Any numerical prefixes are stripped from the url.

Any folders, images or videos with an "_" prefix are ignored and excluded from the build.

folders

Text metadata

YAML in the text file is read and made available to the theme. The variables depend on the theme used.

Theme-1 specific options

---
top: 30
left: 5
width: 30
height: 20
textcolor: #ffffff
---

content dimensions

The units are in percentages

---
top: 12
left: 50
width: 40
height: 50
polygon:[{"x":5, "y":0},{"x":100, "y":0},{"x":100, "y":100},{"x":7, "y":55}, {"x":0, "y":16}]
textcolor: #ff9518
---

Use a polygon to wrap text around shapes. The polygon is defined by 3 or more points in a JSON blob. Units are again in percentages.

content polygon

Theme-2 specific options

---
width: 32.5
---

In theme-2 the width variable acts on the image rather than the content. You can use this to tile images in a row:

image row

Clicking on each image shows it in full screen mode.

Note that in this theme the text goes above its associated image, except the first image which is used as a masthead.

CSS classes can be passed to the template via the "class" property. eg: use class: textafter to add a CSS class that makes the text go after the image.

Metadata file

If you want certain variables to apply to an entire gallery, place a metadata.txt (this is configurable) file in the gallery directory. eg. in metadata.txt:

width: 19

image grid

This sets all image widths to form a grid. Metadata file parameters are overriden by metadata in individual posts.

Advanced usage

Video options

Since we're using FFMpeg for video, we can leverage its filter framework for quick effects. This also saves a re-encode from a video editor workflow. Not all the FFmpeg options are applicable, but here are a few I found useful:

---
video-options: -ss 10 -t 5
---

This will cut the video 10 seconds from the start, with a duration of 5 seconds.

---
video-filters: lut3d=file=fuji3510.cube
---

If you're like me and shoot video in log profile, doing post work can be a pain. I like to globally apply a film print emulation LUT for a consistent look. Note that FFmpeg will look for the LUT file in the working directory you started the script in. FFmpeg does not support .look LUTs, so you'll have to convert them to one of .cube .3dl .dat or .m3d

3d LUT

Here I use a nice low-contrast LUT I found online with excellent highlight rolloff for a cinematic look.

---
video-filters: deshake,unsharp=6:6:3,lutyuv="u=128:v=128"
---

Applies stabilization to the video and a slight sharpen filter, then converts to grayscale. Separate filters with commas.

A full list of FFmpeg filters can be found here

Image options

Similar to videos, we can leverage the image editing features of Imagemagick.

Things like cropping and color correction are very visual operations that are hard to do in command line. Most people would shoot in RAW and export as jpeg anyways, so a lot of ImageMagick's CLI options won't be very useful. However, it is very handy for non-destructively applying effects across an entire gallery, eg:

---
image-options: watermark.png -gravity SouthEast -geometry +50+50 -composite
---

You can use this to apply a watermark on the bottom right corner, with a 50 pixel margin from the edge.

---
image-options: -sharpen 0x1.5
---

Sharpens the image with a 1.5 pixel radius

---
image-options: -hald-clut transform.png
---

Imagemagick does not read LUTs natively, but will accept a Hald color lookup image. This image can be created in photoshop or other graphics package by applying your LUT to the Hald identity CLUT image

---
image-options: -colorspace Gray -sigmoidal-contrast 5,50%
---

Convert to a black-and-white image. Typically you would want to enhance contrast as well, which can be done by the sigmoidal contrast modifier. The first number controls contrast intensity.

A full list of Imagemagick options can be found here

Image sequences

Timelapse and stop-motion are a great way to add motion to a scene. If your folder contains the key word "imagesequence" (this is configurable), the images in the folder will be converted to a video. Video options and filters may be applied to image sequences.

Image sequence

By default the video is encoded at 24fps.

Templating

If the two built-in themes aren't your thing, you can create a new theme. There are only two template files in a theme:

template.html contains the global html for your page. It has access to the following built-in variables:

  • {{basepath}} - a path to the top level directory of the generated site with trailing slash, relative to the current html file
  • {{resourcepath}} - a path to the gallery resource directory, relative to the current html file. This will be mostly empty (since the html page is in the resource directory), except for the top level index.html file, which necessarily draws resources from a subdirectory
  • {{resolution}} - a list of horizontal resolutions, as specified in the config. This is a single string with space-delimited values
  • {{videoformats}} - a list of video codecs that are generated, as defined in the config. This is also a single string with space-delimited values
  • {{content}} - where the text/images will go
  • {{sitetitle}} - a global title for your site, as specified in the config
  • {{gallerytitle}} - the title of the current gallery. This is just taken from the folder name
  • {{navigation}} - a nested html menu generated from the folder structure. Does not include wrapping ul tag so you can use your own id
  • {{disqus_shortname}} - your disqus shortname, as specified in the config
  • {{disqus_identifier}} - the disqus_identifier, which is just the relative path of the current gallery

post-template.html contains the html fragment for each individual image. It has access to the following built-in variables:

  • {{imageurl}} - url of the directory which contains the image/video resources, relative to the current html file.
    • For images, this folder will contain all the scaled versions of the images, where the file name is simply the width of the image - eg. 640.jpg
    • For videos, this folder will contain scaled videos for each resolution and video codec. The naming convention here is size-codec.extension - eg. 640-h264.mp4
    • For videos, this folder will additionally contain scaled images in the same nomenclature (eg. 640.jpg) to be used as posters prior to video load
  • {{imagewidth}} - maximum width that the source image can be downscaled to
  • {{imageheight}} - maximum height, based on aspect ratio and max width
  • {{type}} - the type of media to display, this is a string that can either be "image" or "video"
  • {{textcolor}} - color of the text, either extracted from the source image or specified in config
  • {{backgroundcolor}} - background color, either extracted from the source image or specified in config

in addition to these, any variables specified in the YAML metadata of the post will also be available to the post template, eg:

---
mycustomvar: foo
---

this will cause {{mycustomvar}} to be replaced by "foo", in this particular post

Additional notes:

Specify default values, in case of unset template variables in the form {{foo:bar}} eg:

{{width:50}}

will set width to 50 if no specific value has been assigned to it by the time page generation has finished.

Any unused {{xxx}} variables that did not have defaults are removed from the generated page.

Any non-template files (css, images, javascript) in the theme directory are simply copied into the _site directory.

To avoid additional dependencies, the YAML parser and template engine is simply a sed regex. This means that YAML metadata must take the form of simple key:value pairs, and more complex liquid template syntax are not available.

expose's People

Contributors

arktype avatar artumi-richard avatar bmtm avatar bradp avatar csabapalfi avatar grantlucas avatar hutcheon avatar pwcazenave avatar stephenbrown2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

expose's Issues

line 245: syntax error near unexpected token `<'

Hi there, I'm having trouble running this on Windows 7 using Cygwin. Here is the output:

$ sh expose.sh
FFmpeg not found, videos will not be processed
Scanning directoriesexpose.sh: line 245: syntax error near unexpected token `<'
expose.sh: line 245: `done < <(find "$topdir" -type d ! -path "$topdir*/_*" | sort)'

Thanks.

Markdown file gets swallowed due to failing "file" command

I have a Markdown file in German. Somehow file does not like the first umlaut (all others are fine, weirdly enough — it's just that specific instance).

~/Projects » echo $LANG
en_US.UTF-8
~/Projects » echo $LC_ALL
en_US.UTF-8
~/Projects » echo $LC_CTYPE
UTF-8
~/Projects » file /Users/npiccolotto/Desktop/gallery/04\ Konferenz/L1000500.md
/Users/npiccolotto/Desktop/gallery/04 Konferenz/L1000500.md: ERROR: line 22: regexec error 17, (illegal byte sequence)

Anyway, I was able to fix it by overriding LC_ALL or unsetting all of LANG, LC_ALL and LC_CTYPE.

~/Projects » LC_ALL=C file /Users/npiccolotto/Desktop/gallery/04\ Konferenz/L1000500.md
/Users/npiccolotto/Desktop/gallery/04 Konferenz/L1000500.md: UTF-8 Unicode text, with very long lines

Not sure what the best solution here is.

Sidebar links to sub directory instead of `subdirectory/index.html`

I have a nested directory of photos, but when simply run expose, the links on the left sidebar link to the directory instead of the index.html within that directory. For example, the links are

<a href="../subfolder" ... ></a>

which ends up opening a new finder window for that directory. I think they should be referencing the index.html within the directly which will produce the correct behaviour as such:

<a href="../subfolder/index.html" ... ></a>

I'm not sure if this is the intended behaviour or if I'm using it wrongly, I've tried running it in both Safari and Chrome on my Mac.

Feature suggestions and improvements

Hey @Jack000! Thanks for sharing Expose. It's fantastic.

I was using it to build a photo album of a recent trip of mine and I ran into some pain points, so I tried rewriting Expose in Python to see how it was done.

Here are some features I implemented in my attempt at building Expose, expose.py. I'd like to help if you are open to implementing any of them. I'm not a fantastic Bash programmer but I can probably get the job done.

Caching

Images that were generated don't need to be regenerated if the source material hasn't changed. I save a my_file.jpg.src.sha256 file alongside products generated from my_file.jpg and check that before running ImageMagick or ffmpeg.

Dry Run

It helps me debug or add a new feature when I can see the actions that will be taken without them actually affecting the filesystem. expose.py has a --dry-run argument that prints every render/mkdir action without executing them.

Progress Bars

I was frustrated when I tried converting videos. I didn't know how long a video conversion would take, the current setup doesn't provide progress output from ffmpeg, and it's hard to see progress in the filesystem unless you monitor file sizes. expose.py uses a progress bar library to provide pretty progress bars and ETA for mass conversions.

Parallelism

Expose only ever uses 100% of my CPU, when I can go up to 800% with parallelism. My implementation uses Python's multiprocessing library to call as many simultaneous instances of ImageMagick as you want. I did this with ffmpeg too because I'm not convinced that you can spin ffmpeg up to max threads and get as big a performance boost as running multiple instances. This one may be a little trickier in Bash though.

Let me know what you think. I'm happy to help with any of these.

Handle /bin/sed: Argument list too long

When working on a directory with huge number of images, Expose runs into /bin/sed: Argument list too long errors. This is probably a command line limitation, but Expose should handle it. Possibly chunk it the input files?

Support for avconf

Hi,

I believe that FFMPEG does not exist in the latest Ubuntu distributions, and has been replaced with avconf (http://askubuntu.com/questions/432542/is-ffmpeg-missing-from-the-official-repositories-in-14-04).

Apparently the syntax is slightly different, but very similar. Would it be possible to detect if this exists and use it instead, if FFMPEG is missing?

I'm wanting to use Expose via a Codeship CI workflow, so I don't have that level of control over the system.

Thanks,

Steve

yaml makes text disappear in image

Hello,
I'm new to expose but I already love it.
I have a small issue.
Reading the docs is possible to have some yaml vars in the text including custom variables to be used in a custom template.
Now, I have my text file that looks like this:

`A train to somewhere?

title: new adventures
textcolor: #ffffff
---`

I would expect to see the first line in the image and the part between '---' parsed as yaml.
The results is that no text is displayed in the image.
If I remove the yaml part

A train to somewhere?

I see text as expected in the image.
I also tried removing the custom var "title" but the result is the same, if there's yaml section in the file the text is not displayed in the image.

Am I doing something wrong?
Thanks!

videos generated in draft mode, but otherwise I only get the poster image

First off, great work!
I'm not too familiar with shell scripts and I don't see any error logs, so I'll do my best to describe what's happening:

Running expose -d in the folder generates all the files, including video.

_site
|- img7851
|  |- 640.jpg
|  |- 1024-h264.mp4
|  |- 1024.jpg

But running plain ol' expose (after deleting the previously created _site folder) will only generate the poster-image for the video inside its folder, not the video file.

_site
|- img7851
|  |- 640.jpg

I'm running zsh in Mac OS 10.8.5. It is an older machine, so perhaps it's a hardware issue?
Imagemagick and ffmpeg are installed:

identify -version                                 127 ↵
Version: ImageMagick 6.9.0-9 Q16 x86_64 2015-03-02 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2015 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: DPC Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png xml zlib
ffmpeg
ffmpeg version 2.5.4 Copyright (c) 2000-2015 the FFmpeg developers
  built on Feb 15 2015 20:18:54 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.5.4 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda

IPTC and Exif data discarded

ImageMagick used by exposed discards all the Exif and IPTC data that may be embedded in the original photos by default. But as IPTC data holds information about copyright- and contact information of the photographer (although easily deletable), these information should be kept in the photos wherever possible.

integer expression expected

On my Raspberry Pi running Raspbian, I get
Reading files...................................../home/cherron/bin/expose.sh: line 402: [: 460460460460460460460460460460460460460460460460: integer expression expected

Theme two, text placement

Theme 2 currently places any text before its associated image, except for the first (masthead) image. This means (I think) that there is no way to place any text at the very end of the page (in other words, no way to have the page end with text, instead of ending with an image.)

I created my own version of theme 2, and changed its post-template.html file to place the "post" div after the "image" div.

That solves the issue with not being able to put text at the very end of the page, but now there's no way to have the page start with text (except for the masthead text.)

Would it be useful to allow the name of the text file to include something that indicates whether the text goes before or after the associated image?

File path gets altered somewhere

Sorry, I'd like to fix this myself, but I'm not proficient in bash scripting.

image

Happens with and without draft mode reliably at this file. It is the second video file expose.sh encounters. Anyways, piccolotto/Desktop/gallery should be /Users/npiccolotto/Desktop/gallery. Same goes for rs/npiccolotto/Desktop/gallery. Not sure if the other errors are caused by the wrong path.

I'm running on OSX 10.10.2. Happens with zsh and bash.

Desktop/gallery » zsh --version
zsh --version
zsh 5.0.6 (x86_64-apple-darwin13.3.0)
Desktop/gallery » bash --version
bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.

Example configs for Jack.ventures Jack.works

Are you able to provide sanitized examples for the theme config used for both Jack.works and Jack.Ventures?

While the documentation is a good start, I would like to replicate the timeline and other parts jack.works.

Thanks
David

Does not warn about missing ffmpeg

I ran it for the first time (OSX 10.10.2) and it complained about missing ImageMagick, so I installed it. Then it just ignored my videos. It was only after I installed ffmpeg that expose.sh processed my videos. It should check for ffmpeg when there are videos in the gallery.

Great work btw, thank you very much.

Examples of where things go

Hi Jack, Firstly, a big thanks for doing this. This is pretty well exactly what I need. Clean and stylish. Sometimes less is more.

I'm likely doing something supid/wrong that a quick example of structure would sort? The docs seem to step over placement of this file. For gallery, I've user the parent directory and also each subdirectory.
I see two problems I struggle with:

  1. When I use theme 1, the text doesn't seem to stay in all the pictures of a directory. I'd like to replicate what is on your site where the test can be varied a little. I'd jut like to know where to do that. The pinning of pictures to the same size fails too when the text placement fails.

  2. In theme 2, the width: 32.5 seems to have no effect at all and though the layout switches to theme 2, the images are shown in a list down the page?

I've put files just about everywhere I can think of. ie in each directory, at the highest level etc.
Any help very much appreciated.
Tom.

Can hidden folders and files be ignored?

Hi there, I'm at the beginning of looking at Expose and ran into an issue where if I have my Expose site in a Git repo, it'll pick up the .git folder and generate a site folder for it. Is there a way to ignore hidden folders?

Thanks!

Error on Windows

Just installed the latest git for windows. Followed instructions and got this error -

MINGW64 /g/laragonServerPortable/www/expose/images
$ expose
FFmpeg not found, videos will not be processed
Scanning directories.
Populating nav.
Reading files.Invalid Parameter - /laragonServerPortable
.Invalid Parameter - /laragonServerPortable
.Invalid Parameter - /laragonServerPortable
.Invalid Parameter - /laragonServerPortable
.Invalid Parameter - /laragonServerPortable

Building HTML.....
Starting encode
img20210911130504
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
img20210911130514
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
img20210911130705
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
img20210911130750
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
img20210911130915
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
Invalid Parameter - -size
/g/laragonServerPortable/www/expose/expose.sh: line 972: rsync: command not found

Anything come to mind?

Reverse Numerical Sorting?

Hey there!
Really handy project you have here.
Are there any plans in the pipeline to offer sorting by reverse numerical order?
I'd like to have something like:

9_imagefile.jpg
8_imagefile.jpg
7_imagefile.jpg
6_imagefile.jpg
5_imagefile.jpg

Be the display order, so that newer content (higher number) is displayed at the top.

Thanks for any feedback you can offer!

Next Photo button

I really love this - it looks great.

I was wondering if there is a function to as a "Next Photo" button, to nicely scroll to the next photo. This would be in the form of a down arrow or something unobtrusive.

Either way - cheers for this, i'm going to have a play with it now :)

Unable to encode vp8 with sound

I'm unable to encode vp8 using the disable_audio=false attribute in my _config.sh. It just errors out. H264 works just fine. If I remove the disable_audio line, it works but then I have no sound.

The error that I get is:

Only VP8 or VP9 video and Vorbis or Opus audio and WebVTT subtitles are supported for WebM. av_interleaved_write_frame(): Invalid argument and Error writing trailer of <file>: Invalid argument

This is my ffmpeg config. I do also have --enable-libvorbis and --enable-libvpx as you can see below.

  built with Apple LLVM version 8.0.0 (clang-800.0.42.1)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.2.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-ffplay --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-opencl --disable-lzma --enable-nonfree --enable-vda
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.101 / 57. 64.101
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libavresample   3.  1.  0 /  3.  1.  0
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100

Trying it via the command line: expose disable_audio=false doesn't error out but the video has no sound.

Photos not saving

This looks great, can't wait to integrate it with my Jekyll site.

I'm having an issue however, I only have 1 image, but it is not being saved out. Here is the output:

$ expose
Scanning directories...
Populating nav...
Reading files.
Building HTML.
Starting encode
steve


 $ tree .
.
├── 2015
│   └── shoot
│       └── steve.jpg
└── _site
    ├── 2015
    │   └── shoot
    │       ├── index.html
    │       └── steve
    ├── cookie.js
    ├── global.css
    ├── global.js
    ├── img
    │   ├── camera.png
    │   ├── camera_mask.png
    │   ├── close.png
    │   ├── comment.png
    │   ├── comment_mask.png
    │   ├── download.png
    │   ├── download_mask.png
    │   ├── facebook.png
    │   ├── facebook_mask.png
    │   ├── hackernews.png
    │   ├── hackernews_mask.png
    │   ├── heart.png
    │   ├── heart_mask.png
    │   ├── monitor.png
    │   ├── monitor_mask.png
    │   ├── next.png
    │   ├── pinterest.png
    │   ├── pinterest_mask.png
    │   ├── prev.png
    │   ├── reddit.png
    │   ├── reddit_mask.png
    │   ├── text.png
    │   ├── text_mask.png
    │   ├── twitter.png
    │   └── twitter_mask.png
    ├── index.html
    └── json.js

7 directories, 32 files

RSS Feed?

Would an RSS feed be a possibility such that new image additions (on build) are logged in the RSS file?

How do you find polygons

Use a polygon to wrap text around shapes. The polygon is defined by 3 or more points in a JSON blob. Units are again in percentages.

Do you use some tool to make a polygon? Can you describe your flow in more details please?

Expose site works locally, but not hosted on Amazon S3

Thanks to Expose, I've got a great looking photosite.

Unfortunately, I can only get it to work locally on my Mac. After pushing to Amazon S3, I'm getting the following error and no photos showing:

This page contains the following errors:
error on line 58 at column 107: EntityRef: expecting ';'
Below is a rendering of the page up to the first error.

I have checked the contents of my S3 bucket, and it is simply everything inside the _site directory that worked fine locally. I also have set a policy that makes all the content viewable publicly, and my domain points to the s3-website URL. Are there any URL or domain variables that need to be set to get Expose sites working when hosted?

My site is here: https://photos.stephenchinnadorai.com/

Any help appreciated!

Gallery Headers

Hi, I noticed on jack.ventures (awesome photography by the way) that your galleries each had headers / variable text sizes in slides. Is this at all possible in this tool you released, or are you keeping that a trade secret?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.