Показать сообщение отдельно
  #14 (permalink)  
Старый 20.07.2013, 19:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Показ загружаемых картинок в виде слайдера
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>
Ответить с цитированием