jquery - 使用 jQuery 上传和裁剪个人资料图片

标签 jquery html css image crop

我需要上传图片并在指定大小(高度和宽度)的 div 中显示它并可以裁剪它,我已经准备好要显示图片的 div(类“.profile-img”) ,我认为得到一些帮助是件好事,我真的需要它尽可能快..

在这个示例中,我使用了 boostrap、jquery、css 和 html

非常感谢!!

$(document).on('click', '#close-preview', function(){ 
    $('.image-preview').popover('hide');
    // Hover befor close the preview
    $('.image-preview').hover(
        function () {
           $('.image-preview').popover('show');
        }, 
         function () {
           $('.image-preview').popover('hide');
        }
    );    
});

$(function() {
    // Create the close button
    var closebtn = $('<button/>', {
        type:"button",
        text: 'x',
        id: 'close-preview',
        style: 'font-size: initial;',
    });
    closebtn.attr("class","close pull-right");
    // Set the popover default content
    $('.image-preview').popover({
        trigger:'manual',
        html:true,
        title: "<strong>Preview</strong>"+$(closebtn)[0].outerHTML,
        content: "There's no image",
        placement:'bottom'
    });
    // Clear event
    $('.image-preview-clear').click(function(){
        $('.image-preview').attr("data-content","").popover('hide');
        $('.image-preview-filename').val("");
        $('.image-preview-clear').hide();
        $('.image-preview-input input:file').val("");
        $(".image-preview-input-title").text("Browse"); 
    }); 
    // Create the preview image
    $(".image-preview-input input:file").change(function (){     
        var img = $('<img/>', {
            id: 'dynamic',
            width:250,
            height:200
        });      
        var file = this.files[0];
        var reader = new FileReader();
        // Set preview image into the popover data-content
        reader.onload = function (e) {
            $(".image-preview-input-title").text("Change");
            $(".image-preview-clear").show();
            $(".image-preview-filename").val(file.name);            
            img.attr('src', e.target.result);
            $(".image-preview").attr("data-content",$(img)[0].outerHTML).popover("show");
        }        
        reader.readAsDataURL(file);
    });  
});
.container{
    margin-top:20px;
}
.image-preview-input {
    position: relative;
    overflow: hidden;
    margin: 0px;    
    color: #333;
    background-color: #fff;
    border-color: #ccc;    
}
.image-preview-input input[type=file] {
	position: absolute;
	top: 0;
	right: 0;
	margin: 0;
	padding: 0;
	font-size: 20px;
	cursor: pointer;
	opacity: 0;
	filter: alpha(opacity=0);
}
.image-preview-input-title {
    margin-left:2px;
}

.profile-img {
width:180px;
height:180px;
border:1px solid #eee;
margin:20px;}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<div class="container">
    <div class="row"> 
      <!----------------->
         <div class="profile-img">profile img here!!</div>
      <!----------------->
        <div class="col-xs-12 col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">  
            <!-- image-preview-filename input [CUT FROM HERE]-->
            <div class="input-group image-preview">
                <input type="text" class="form-control image-preview-filename" disabled="disabled"> <!-- don't give a name === doesn't send on POST/GET -->
                <span class="input-group-btn">
                    <!-- image-preview-clear button -->
                    <button type="button" class="btn btn-default image-preview-clear" style="display:none;">
                        <span class="glyphicon glyphicon-remove"></span> Clear
                    </button>
                    <!-- image-preview-input -->
                    <div class="btn btn-default image-preview-input">
                        <span class="glyphicon glyphicon-folder-open"></span>
                        <span class="image-preview-input-title">Browse</span>
                        <input type="file" accept="image/png, image/jpeg, image/gif" name="input-file-preview"/> <!-- rename it -->
                    </div>
                </span>
            </div><!-- /input-group image-preview [TO HERE]--> 
        </div>
    </div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>

最佳答案

尝试使用下面的代码上传图片并进行预览。

function readURL(input) {
  if (input.files && input.files[0]) {
    var reader = new FileReader();

    reader.onload = function (e) {
      $('.profile-img').attr('src', e.target.result);
    }

    reader.readAsDataURL(input.files[0]);
  }
}

$("#inputFile").change(function () {
  readURL(this);
});
.container{
    margin-top:20px;
}
.image-preview-input {
    position: relative;
    overflow: hidden;
    margin: 0px;    
    color: #333;
    background-color: #fff;
    border-color: #ccc;    
}
.image-preview-input input[type=file] {
	position: absolute;
	top: 0;
	right: 0;
	margin: 0;
	padding: 0;
	font-size: 20px;
	cursor: pointer;
	opacity: 0;
	filter: alpha(opacity=0);
}
.image-preview-input-title {
    margin-left:2px;
}

.profile-img {
width:180px;
height:180px;
border:1px solid #eee;
margin:20px;}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form id="form1" runat="server">
  <div class="container">
    <div class="row"> 
    <img class="profile-img" src="" alt="your image" />
      <div class="col-xs-12 col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">
        <div class="input-group image-preview">
          <input type="text" class="form-control image-preview-filename" disabled="disabled">
          <span class="input-group-btn">
            <button type="button" class="btn btn-default image-preview-clear" style="display:none;">
              <span class="glyphicon glyphicon-remove"></span> Clear
            </button>
            <div class="btn btn-default image-preview-input">
              <span class="glyphicon glyphicon-folder-open"></span>
              <span class="image-preview-input-title">Browse</span>
              <input type="file" accept="image/png, image/jpeg, image/gif" id="inputFile"/>
            </div>
          </span>
        </div>
      </div>
    </div>
  </div>
</form>

关于jquery - 使用 jQuery 上传和裁剪个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36008111/

相关文章:

javascript - 修复正则表达式以不从文本中重新抓取旧 URL (JS)

javascript - 如何在 javascript 中创建链接

php - 产品缩略图中的云缩放效果

javascript - 在 DOM 上使用 Javascript 定位 Div

javascript - ng-sortable 在表上。当我拖动一行时,CSS 被抛出

javascript - 找到:selected element from list using JQuery

jQuery:易于调整的工具提示,无需使用图像,并且免费用于商业用途

javascript - HTML 输入 : Require URL to end in specific filetype

css - index.jsp 的 Webservlet urlpatterns

javascript - TailwindCss 固定导航栏