Полупрозрачные края картинок (можно ли сделать?)
Здравствуйте:) .
Очень просто можно сделать в фотошопе картинку с полупрозрачными краями, сохранить в PNG и всё хорошо. Только вот файл такой с альфаканалом весить будет ну очень много (как следствие того- сайт потом долго грузится). Вопрос, как зделать средствами JS эффект полупрозрачных краёв картинки(jpg,png)? Можно ли? Подскажите пожалуйтса. Из такого ![]() сделать вот так ![]() |
Ты с какой мухосрани выходишь в сеть, чтобы пинг в даже мегабайт грузился долго?
Не надо тебе этого хотеть. Можно сделать на канвасе или в SVG. Но не надо. Просто поменяй провайдера. |
|
Цитата:
|
Fesali,
http://www.netzgesta.de/edge/ |
|
рони , спасибо, похоже это именно оно! Пойду юзать, учится.
|
Или как-то так
<style>
.container {
position:relative;
display: inline-block;
}
.mask {
position:absolute;
top: 0px;
left: 0px;
width:100%;
height:100%;
background-image: -webkit-radial-gradient(50% 50%, ellipse closest-side, rgba(255,255,255,0) 40%, rgba(255,255,255,1));
background-image: -moz-radial-gradient(50% 50%, ellipse closest-side, rgba(255,255,255,0) 40%, rgba(255,255,255,1));
background-image: -o-radial-gradient(50% 50%, ellipse closest-side, rgba(255,255,255,0) 40%, rgba(255,255,255,1));
background-image: -ms-radial-gradient(50% 50%, ellipse closest-side, rgba(255,255,255,0) 40%, rgba(255,255,255,1));
z-index: 100;
}
</style>
<div class="container">
<image src= "http://www.imageup.ru/img133/2542020/preload.png"/>
<div class="mask">
</div>
</div>
|
Dilettante_Pro Это Вы наложили градиент который уходит в белый цвет. Нужно чтоб картинка уходила в прозрачность, чтоб края картинки были прозрачными!
|
рони ваш пример что-то не работает.
|
|
Цитата:
|
что то не получается завести этот канвас http://codepen.io/anon/pen/ALpvQK?editors=1100#0
|
Цитата:
Цитата:
Цитата:
|
В фаерфоксе работает, в опере ни в какую, хотя демо пример работает и в опере. Я понял что в скрипте нужно указать ссылку на изображение img.src = imagecanvas.toDataURL("red-panda.jpg") перепробовал, зараза в опере на работает
|
Fesali,
картинки и скрипт положите к себе на сервер |
Работает, но не нравится что сперва картинка появляется целиком, потом маска её обрезает, с опозданием. На сервер загрузил, все получилось.
Спасибо! буду разбиратся. |
Fesali,
так не показывайте пока не обработается -- гифку прелоада или с помощью css |
Цитата:
|
Цитата:
|
Цитата:
вот так
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.mask.hide{
opacity: 0;
}
.mask{
transition:opacity .8s;
}
</style>
<script>(function(){
var mask = document.createElement('img');
mask.src = "centerblur.png";
var width = 0;
var height = 0;
window.addEventListener('load', function(ev){
var imagecanvas = document.createElement('canvas');
var imagecontext = imagecanvas.getContext('2d');
var images = document.querySelectorAll('.mask');
var all = images.length;
while (all--) {
var img = images[all];
width = img.offsetWidth;
height = img.offsetHeight;
imagecanvas.width = width;
imagecanvas.height = height;
imagecontext.drawImage(mask, 0, 0, width, height);
imagecontext.globalCompositeOperation = 'source-atop';
imagecontext.drawImage(img, 0, 0);
img.src = imagecanvas.toDataURL();
img.classList.remove('hide')
}
}, false);
})();</script>
</head>
<body>
<img src="preload.png" alt="" class="mask hide" >
</body>
</html>
|
Вот кое-что в гугле нашел, поколдовал и вот что получилось (края только подровнять нужно). Что скажете?
<div class="content">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="620" height="412">
<mask id="mask1">
<ellipse cx="50%" cy="50%" rx="40%" ry="43%" fill="white" filter="url(#filter2)"></ellipse>
</mask>
<image xlink:href="http://www.imageup.ru/img133/2542020/preload.png" width="640" height="412" mask="url(#mask1)"></image>
</svg>
<svg width="0" height="0">
<defs>
<filter id="filter2">
<feGaussianBlur stdDeviation="20"></feGaussianBlur>
</filter>
<linearGradient id="gradient" x1="0" y1="00%" x2="0" y2="100%">
<stop stop-color="black" offset="0"></stop>
<stop stop-color="white" offset="1"></stop>
</linearGradient>
</defs>
</svg>
</div>
|
Fesali,
вам решать :) |
Fesali, про svg уже было сказано и еще раз скажу, что ты херней занимаешься. Если бы у тебя там был свой инстаграм, это виньетирование оказалось бы в числе других фильтров, но у тебя какая-то анальная идея экономить на трафике.
|
| Часовой пояс GMT +3, время: 01:06. |