forked from Public/pics
		
	Merge pull request 'Add gaussian blurs behind photos' (#34) from image-blur into master
Reviewed-on: Public/pics#34
This commit is contained in:
		
						commit
						5aec2f25b1
					
				@ -199,33 +199,57 @@ i.space-invader.alt-7::before {
 | 
			
		||||
 | 
			
		||||
div.polaroid {
 | 
			
		||||
	background: #fff;
 | 
			
		||||
	box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
 | 
			
		||||
	box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.3);
 | 
			
		||||
	line-height: 0;
 | 
			
		||||
	position: relative;
 | 
			
		||||
	transition: 0.25s;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid img {
 | 
			
		||||
	background: url('../images/nothumb.svg') center no-repeat;
 | 
			
		||||
div.polaroid:hover {
 | 
			
		||||
	box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
 | 
			
		||||
}
 | 
			
		||||
div.polaroid img.normal-photo {
 | 
			
		||||
	background: #fff url('../images/nothumb.svg') center no-repeat;
 | 
			
		||||
	border: none;
 | 
			
		||||
	left: 0;
 | 
			
		||||
	object-fit: cover;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	z-index: 20;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid img.blur-photo {
 | 
			
		||||
	filter: blur(50px);
 | 
			
		||||
	left: 0;
 | 
			
		||||
	object-fit: cover;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	z-index: 0;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid img.placeholder-image {
 | 
			
		||||
	background: #fff;
 | 
			
		||||
	z-index: 20;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid h4 {
 | 
			
		||||
	background: #fff;
 | 
			
		||||
	bottom: 0;
 | 
			
		||||
	color: #000;
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	font: 400 18px 'Coda', sans-serif;
 | 
			
		||||
	padding: 15px 5px;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	text-overflow: ellipsis;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	white-space: nowrap;
 | 
			
		||||
	overflow: hidden;
 | 
			
		||||
	z-index: 20;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid a {
 | 
			
		||||
	display: block;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
div.polaroid:hover {
 | 
			
		||||
	box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Album title boxes
 | 
			
		||||
@ -366,22 +390,53 @@ footer a {
 | 
			
		||||
 | 
			
		||||
/* Styling for the photo pages
 | 
			
		||||
--------------------------------*/
 | 
			
		||||
#photo_frame {
 | 
			
		||||
	padding-top: 1.5vh;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
}
 | 
			
		||||
#photo_frame a {
 | 
			
		||||
 | 
			
		||||
#photo_frame {
 | 
			
		||||
	padding: 3.5vh 0;
 | 
			
		||||
	text-align: center;
 | 
			
		||||
	height: 95vh;
 | 
			
		||||
}
 | 
			
		||||
#photo_frame a img {
 | 
			
		||||
	border: none;
 | 
			
		||||
	box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
 | 
			
		||||
	cursor: -moz-zoom-in;
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	height: 97vh;
 | 
			
		||||
	max-width: 100%;
 | 
			
		||||
 | 
			
		||||
#photo-figure {
 | 
			
		||||
	position: relative;
 | 
			
		||||
	object-fit: contain;
 | 
			
		||||
	width: auto;
 | 
			
		||||
	height: 93vh;
 | 
			
		||||
	object-position: center center;
 | 
			
		||||
}
 | 
			
		||||
#photo-figure img {
 | 
			
		||||
	object-position: center center;
 | 
			
		||||
}
 | 
			
		||||
#photo-figure img.normal-photo {
 | 
			
		||||
	border: none;
 | 
			
		||||
	cursor: -moz-zoom-in;
 | 
			
		||||
	object-fit: contain;
 | 
			
		||||
	z-index: 20;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	left: 0;
 | 
			
		||||
	top: 0;
 | 
			
		||||
}
 | 
			
		||||
#photo-figure img.blur-photo {
 | 
			
		||||
	filter: blur(50px);
 | 
			
		||||
	left: 0;
 | 
			
		||||
	object-fit: contain;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	z-index: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
figure.portrait-figure,
 | 
			
		||||
figure.landscape-figure {
 | 
			
		||||
	height: 93vh;
 | 
			
		||||
	margin: 0 auto;
 | 
			
		||||
}
 | 
			
		||||
figure.panorama-figure {
 | 
			
		||||
	object-fit: cover;
 | 
			
		||||
	margin: 0 auto;
 | 
			
		||||
}
 | 
			
		||||
figure#photo-figure img.normal-photo,
 | 
			
		||||
figure#photo-figure img.blur-photo {
 | 
			
		||||
	height: 100%;
 | 
			
		||||
	width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#previous_photo, #next_photo {
 | 
			
		||||
 | 
			
		||||
@ -42,7 +42,7 @@ class AlbumIndex extends Template
 | 
			
		||||
	{
 | 
			
		||||
		echo '
 | 
			
		||||
					<div class="col-md-6 col-xl-4">
 | 
			
		||||
						<div class="polaroid landscape">';
 | 
			
		||||
						<div class="polaroid landscape" style="aspect-ratio: 1.12">';
 | 
			
		||||
 | 
			
		||||
		if ($this->show_edit_buttons)
 | 
			
		||||
			echo '
 | 
			
		||||
@ -58,15 +58,20 @@ class AlbumIndex extends Template
 | 
			
		||||
				$thumbs[$factor] = $album['thumbnail']->getThumbnailUrl(
 | 
			
		||||
					static::TILE_WIDTH * $factor, static::TILE_HEIGHT * $factor, true, true);
 | 
			
		||||
 | 
			
		||||
			foreach (['normal-photo', 'blur-photo'] as $className)
 | 
			
		||||
			{
 | 
			
		||||
				echo '
 | 
			
		||||
								<img alt="" src="', $thumbs[1], '"' . (isset($thumbs[2]) ?
 | 
			
		||||
									' srcset="' . $thumbs[2] . ' 2x"' : '') .
 | 
			
		||||
									' class="', $className, '"' .
 | 
			
		||||
									' alt="" style="aspect-ratio: ', self::TILE_RATIO, '">';
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			echo '
 | 
			
		||||
								<img alt="" src="', BASEURL, '/images/nothumb.svg"',
 | 
			
		||||
									' class="placeholder-image"',
 | 
			
		||||
									' style="aspect-ratio: ', self::TILE_RATIO, '; object-fit: unset">';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -67,17 +67,31 @@ class PhotoPage extends Template
 | 
			
		||||
	protected function photo()
 | 
			
		||||
	{
 | 
			
		||||
		echo '
 | 
			
		||||
				<div id="photo_frame">
 | 
			
		||||
					<a href="', $this->photo->getUrl(), '">';
 | 
			
		||||
				<a href="', $this->photo->getUrl(), '">
 | 
			
		||||
					<div id="photo_frame">';
 | 
			
		||||
 | 
			
		||||
		if ($this->photo->isPortrait())
 | 
			
		||||
			echo $this->photo->getInlineImage(null, 960);
 | 
			
		||||
		{
 | 
			
		||||
			echo '
 | 
			
		||||
						<figure id="photo-figure" class="portrait-figure">',
 | 
			
		||||
				$this->photo->getInlineImage(null, 960, 'normal-photo'),
 | 
			
		||||
				$this->photo->getInlineImage(null, 960, 'blur-photo'), '
 | 
			
		||||
						</figure>';
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
			echo $this->photo->getInlineImage(1280, null);
 | 
			
		||||
		{
 | 
			
		||||
			$className = $this->photo->isPanorama() ? 'panorama-figure' : 'landscape-figure';
 | 
			
		||||
			echo '
 | 
			
		||||
						<figure id="photo-figure" class="', $className, '">',
 | 
			
		||||
				$this->photo->getInlineImage(1280, null, 'normal-photo'),
 | 
			
		||||
				$this->photo->getInlineImage(1280, null, 'blur-photo'), '
 | 
			
		||||
						</figure>';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
					</a>
 | 
			
		||||
				</div>';
 | 
			
		||||
						</figure>
 | 
			
		||||
					</div>
 | 
			
		||||
				</a>';
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	private function photoNav()
 | 
			
		||||
 | 
			
		||||
@ -83,15 +83,23 @@ class PhotosIndex extends Template
 | 
			
		||||
 | 
			
		||||
	protected function photo(Image $image, $className, $width, $height, $crop = true, $fit = true)
 | 
			
		||||
	{
 | 
			
		||||
		// Prefer thumbnail aspect ratio if available, otherwise use image aspect ratio.
 | 
			
		||||
		$aspectRatio = isset($width, $height) ? $width / $height : $image->ratio();
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
				<div class="polaroid ', $className, '">';
 | 
			
		||||
				<div class="polaroid ', $className, '" style="aspect-ratio: ', $aspectRatio, '">';
 | 
			
		||||
 | 
			
		||||
		if ($this->show_edit_buttons)
 | 
			
		||||
			echo '
 | 
			
		||||
					<a class="edit" href="', BASEURL, '/editasset/?id=', $image->getId(), '">Edit</a>';
 | 
			
		||||
 | 
			
		||||
		echo '
 | 
			
		||||
					<a href="', $image->getPageUrl(), $this->url_suffix, '#photo_frame">
 | 
			
		||||
					<a href="', $image->getPageUrl(), $this->url_suffix, '#photo_frame">';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		foreach (['normal-photo', 'blur-photo'] as $className)
 | 
			
		||||
		{
 | 
			
		||||
			echo '
 | 
			
		||||
						<img src="', $image->getThumbnailUrl($width, $height, $crop, $fit), '"';
 | 
			
		||||
 | 
			
		||||
			// Can we offer double-density thumbs?
 | 
			
		||||
@ -100,10 +108,8 @@ class PhotosIndex extends Template
 | 
			
		||||
			else
 | 
			
		||||
				echo ' srcset="', $image->getThumbnailUrl($image->width(), $image->height(), true), ' 2x"';
 | 
			
		||||
 | 
			
		||||
		// Prefer thumbnail aspect ratio if available, otherwise use image aspect ratio.
 | 
			
		||||
		$aspectRatio = isset($width, $height) ? $width / $height : $image->ratio();
 | 
			
		||||
 | 
			
		||||
		echo ' alt="" title="', $image->getTitle(), '" style="aspect-ratio: ', $aspectRatio, '">';
 | 
			
		||||
			echo ' alt="" title="', $image->getTitle(), '" class="', $className, '" style="aspect-ratio: ', $aspectRatio, '">';
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if ($this->show_labels)
 | 
			
		||||
			echo '
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user