Кропинг Jquery в слайдере
Есть замечательный простой кропинг который и центрует изображение и правильно его обрезает
<script src="/js/jquery.resizecrop-1.0.3.min.js"></script>
<script>
$(document).ready(function(){
$('.slide').resizecrop({
width:320,
height:320,
vertical:"top"
});
});
</script>
Но вот проблема как его правильно прикрутить к слайдеру, в слайдере не хочет работать слайдер формируется из заранее выбранных изображений на клиенте на этой же странице следующим образом,
<script>
$(function()
{
$(".image").change(showPreviewImage_click);
}
)
var num = 0;
function showPreviewImage_click(e) {
var $input = $(this);
var inputFiles = this.files;
if(inputFiles == undefined || inputFiles.length == 0) return;
for (var i = 0; i<inputFiles.length; i++) {
var id = 'id'+ ++num;
var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id,'checked':"checked"});
input.appendTo($('.slider'));
var label = $('<label/>', {'for': id});
var img_min = $('<img/>', {'class': 'min'});
img_min.appendTo(label);
label.appendTo($('.slider'));
var inputFile = inputFiles[i];
var img = $('<img/>', {'class': 'slide'});
img.appendTo($('.slider'));
var reader = new FileReader();
reader.onload = (function (img1, img2)
{
return function(event) {
img1.attr("src", event.target.result);
img2.attr("src", event.target.result);
};
}
)(img_min, img)
reader.onerror = function(event) {
alert("I AM ERROR: " + event.target.error.code);
};
reader.readAsDataURL(inputFile);}
}
</script>
помогите пожалуйста в слайдер вставлять уже кропированное изображение, видимо требуется как то менять указанный код который формирует слайдер так чтобы в слайдер попадало уже кропированное изображение желательно без сервера, помогите пожалуйста кто может |
imediasun1,
зачем плодить новые темы ? и можно же подумать раз плагин работает с уже загруженными изображениями то и подключать его надо после загрузки изображения - после каждого изображения -- строка 32 дальше я думаю сами сообразите. и вот это что то бессмысленное Цитата:
|
'checked':"checked"}); - для того чтобы слайд сразу отображался в слайдере без этого не отображается, а плагин прикрутить все таки не получается, напишите пожалуйста как это сделать, спасибо большое дело в том что слайдер перестает функционировать как слайдер если я уже на слайдер накладываю плагин кропинга, нужно как то сохранить наверное в переменную кропированное изображение и передавать его в слайдер, помогите пожалуйста до конца, может даже сохраняя на сервере как измененное изображение, я очень слаб в js пока что, я думаю вы успели заметить это спасибо
|
imediasun1,
resizecrop подключить к картинкам можно но что вы называите слайдером понятия неимею Цитата:
|
Эти картинки составляют слайдер, может быть конфликтует с resizecrope вот этот плагин, но скорее всего я думаю я к картинкам не правильно resizecrop подключаю, напишите как вы бы подключили пожалуйста
работу самого слайдера можно посмотреть здесьhttp://thecodeplayer.com/walkthrough...zed-thumbnails |
imediasun1,
:cray:
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://resize-crop.googlecode.com/files/jquery.resizecrop-1.0.3.js"></script>
<style type="text/css">
.min {
width: 45px;
}
</style>
</head>
<body>
<input type="file" name="my-pic" id="file-field" class="image" multiple=""/>
<div class="slider" ></div>
<script>
$(function()
{
$(".image").change(showPreviewImage_click);
}
)
var num = 0;
function showPreviewImage_click(e) {
var $input = $(this);
var inputFiles = this.files;
if(inputFiles == undefined || inputFiles.length == 0) return;
for (var i = 0; i<inputFiles.length; i++) {
var id = 'id'+ ++num;
var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id});
input.appendTo($('.slider'));
var label = $('<label/>', {'for': id});
var img_min = $('<img/>', {'class': 'min'});
img_min.appendTo(label);
label.appendTo($('.slider'));
var inputFile = inputFiles[i];
var img = $('<img/>', {'class': 'slide'});
img.appendTo($('.slider'))
var reader = new FileReader();
reader.onload = (function (img1, img2)
{
return function(event) {
img1.attr("src", event.target.result);
img2.attr("src", event.target.result);
img2.resizecrop({
width:320,
height:320,
vertical:"top"
});
};
}
)(img_min, img)
reader.onerror = function(event) {
alert("I AM ERROR: " + event.target.error.code);
};
reader.readAsDataURL(inputFile);}
input.prop({'checked': true})
}
</script>
</body>
</html>
|
Спасибо, я так уже пробовал но не ресайзит
|
Цитата:
зачем там скрипт непонятно -- всё на css в слайдере том |
загружаем с Shift или Ctrl несколько фото и смотрим
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://resize-crop.googlecode.com/files/jquery.resizecrop-1.0.3.js"></script>
<style type="text/css">
/*Time for the CSS*/
* {margin: 0; padding: 0;}
body {background: #ccc;}
.slider{
width: 640px; /*Same as width of the large image*/
position: relative;
/*Instead of height we will use padding*/
padding-top: 320px; /*That helps bring the labels down*/
margin: 100px auto;
/*Lets add a shadow*/
box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.75);
}
/*Last thing remaining is to add transitions*/
.slider > img{
max-height: 320px;
min-width: 640px;
position: absolute;
left: 0; top: 0;
transition: all 0.5s;
}
.slider input[name='slide_switch'] {
display: none;
}
.slider label {
/*Lets add some spacing for the thumbnails*/
margin: 18px 0 0 18px;
border: 3px solid #999;
float: left;
cursor: pointer;
transition: all 0.5s;
/*Default style = low opacity*/
opacity: 0.6;
}
.slider label img{
display: block;
height: 45px;
}
/*Time to add the click effects*/
.slider input[name='slide_switch']:checked+label {
border-color: #666;
opacity: 1;
}
/*Clicking any thumbnail now should change its opacity(style)*/
/*Time to work on the main images*/
.slider input[name='slide_switch'] ~ img {
opacity: 0;
-moz-transform: scale(1.1); /* Для Firefox */
-ms-transform: scale(1.1); /* Для IE */
-webkit-transform: scale(1.1); /* Для Safari, Chrome, iOS */
-o-transform: scale(1.1); /* Для Opera */
transform: scale(1.1);
}
/*That hides all main images at a 110% size
On click the images will be displayed at normal size to complete the effect
*/
.slider input[name='slide_switch']:checked+label+img {
opacity: 1;
-moz-transform: scale(1); /* Для Firefox */
-ms-transform: scale(1); /* Для IE */
-webkit-transform: scale(1); /* Для Safari, Chrome, iOS */
-o-transform: scale(1); /* Для Opera */
transform: scale(1);
}
/*Clicking on any thumbnail now should activate the image related to it*/
/*We are done :)*/
</style>
</head>
<body>
<input type="file" name="my-pic" id="file-field" class="image" multiple=""/>
<div class="slider" ></div>
<script>
$(function()
{
$(".image").change(showPreviewImage_click);
}
)
var num = 0;
function showPreviewImage_click(e) {
var $input = $(this);
var inputFiles = this.files;
if(inputFiles == undefined || inputFiles.length == 0) return;
for (var i = 0; i<inputFiles.length; i++) {
var id = 'id'+ ++num;
var input = $('<input/>', {'type': "radio", 'name': "slide_switch", 'id': id});
input.appendTo($('.slider'));
var label = $('<label/>', {'for': id});
var img_min = $('<img/>', {'class': 'min'});
img_min.appendTo(label);
label.appendTo($('.slider'));
var inputFile = inputFiles[i];
var img = $('<img/>', {'class': 'slide'});
img.appendTo($('.slider'))
var reader = new FileReader();
reader.onload = (function (img1, img2)
{
return function(event) {
img1.attr("src", event.target.result);
img2.attr("src", event.target.result);
};
}
)(img_min, img)
reader.onerror = function(event) {
alert("I AM ERROR: " + event.target.error.code);
};
reader.readAsDataURL(inputFile);}
input.prop({'checked': true});
}
</script>
</body>
</html>
|
а где ресайз, мне надо чтобы загружаемые фотки были с кропом 320 на 320
|
Рони , если интересно , можешь победить эту тему, я уже выхода не вижу только как кроп делать на стороне сервера, но если интересно попробуй все таки ресайз и кроп сделать на клиенте, большое спасибо, мне кстати тоже интересно если победишь напиши пожалуйста , но так как оно сейчас есть кроп делается а слайдер не работает, кроп его выбивает, не знаю почему, спасибо тебе в любом случае за помощь
|
imediasun1,
всё что вы хотите и слайдер и кропи ресайз -- делается в ваших скриптах с помощью ксс настраивайте на свой лад стили -- тоже самое делают ваши скрипты только автоматом - у меня и 320px квадрат и слайдер работают без дополнительных скриптов -- просто отрегулировал ксс. |
Вложений: 1
выложите пожалуйста окончательный код с ксс, рони, очень не хочется через сервер кроп делать, спасибо
|
Показ загружаемых картинок в виде слайдера
imediasun1,
думаю что настоящую обрезку можно сделать только на сервере, в скрипт добавил настройку показа фото сейчас берётся середина...
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<style type="text/css">*{
margin:0;
padding:0;
}
body{
background:#ccc;
}
.slider{
width:320px;
position:relative;
padding-top:320px;
margin:100px auto;
box-shadow:0 10px 20px -5px rgba(0,0,0,0.75);
overflow:hidden;
padding-bottom:20px;
}
.sp img{
position:absolute;
left:0;
top:0;
}
.slider input[name='slide_switch']{
display:none;
}
.slider label{
margin:18px 0 0 18px;
border:3px solid #999;
float:left;
cursor:pointer;
transition:all 0.5s;
opacity:0.6;
}
.slider label img{
display:block;
height:45px;
}
.slider input[name='slide_switch']:checked+label{
border-color:#666;
opacity:1;
}
.slider input[name='slide_switch']~span{
opacity:0;
-moz-transform:scale(1.1);
-ms-transform:scale(1.1);
-webkit-transform:scale(1.1);
-o-transform:scale(1.1);
transform:scale(1.1);
}
.slider input[name='slide_switch']:checked+label+span{
opacity:1;
-moz-transform:scale(1);
-ms-transform:scale(1);
-webkit-transform:scale(1);
-o-transform:scale(1);
transform:scale(1);
}
span{
width:320px;
position:absolute;
left:0;
top:0;
height:320px;
overflow:hidden;
transition:all 0.5s;
}
</style>
</head>
<body>
<input type="file" name="my-pic" id="file-field" class="image" multiple=""/><br>
<div class="slider" ></div>
<script>
$(function () {
$(".image").change(showPreviewImage_click);
})
var num = 0;
function showPreviewImage_click(e) {
var $input = $(this);
var inputFiles = this.files;
if (inputFiles == undefined || inputFiles.length == 0) return;
for (var i = 0; i < inputFiles.length; i++) {
var id = 'id' + ++num;
var input = $('<input/>', {
'type': "radio",
'name': "slide_switch",
'id': id
});
input.appendTo($('.slider'));
var label = $('<label/>', {
'for': id
});
var img_min = $('<img/>', {
'class': 'min'
});
img_min.appendTo(label);
label.appendTo($('.slider'));
var inputFile = inputFiles[i];
var img = $('<img/>', {
'class': 'slide'
});
var span = $('<span/>', {
'class': 'sp'
})
img.appendTo(span)
span.appendTo($('.slider'))
var reader = new FileReader();
reader.onload = (function (img1, img2) {
return function (event) {
img1.attr("src", event.target.result);
img2.load(function () {
var w = this.width;
var h = this.height;
w > h ? (this.height = 320, w = 320 * w / h, this.width = w, h = 320) : (this.width = 320, h = 320 * h / w, this.height = h, w = 320);
img2.css({
left: -(w - 320) / 2,//лево -> убрать в left /2 или право весь убрать весь left -> left : -(h-320)/2, для горизонтальных картинок
top: -(h - 320) / 2 //низ -> убрать в top /2 или верх весь убрать весь top -> ,top : -(h-320)/2 для вертикальных картинок
})
});
img2.attr("src", event.target.result);
};
})(img_min, img)
reader.onerror = function (event) {
alert("I AM ERROR: " + event.target.error.code);
};
reader.readAsDataURL(inputFile);
}
input.prop({
'checked': true
});
}
</script>
</body>
</html>
|
Спасибо большое вам, Рони, у меня на сайте стаяла задача именно без сервера на определенном этапе показать в слайдере обрезанные изображения, вы очень помогли, все работает, приятного программирования
|
| Часовой пояс GMT +3, время: 21:51. |