足球游戏_中国足彩网¥体育资讯$

jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
来源:易贤网 阅读:2459 次 日期:2015-04-24 11:24:04
温馨提示:易贤网小编为您整理了“jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享”,方便广大网友查阅!

这篇文章主要介绍了jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码,非常的简单实用,效果也很棒,有需要的小伙伴可以参考下。

网页端 裁剪图片,不需要经过服务器。

这个是用 框架实现的。配合jcrop.

高级浏览器 使用 canvas 裁剪,ie6 7 8使用 flash过度。

核心代码:

var el = $('input').get(0);

seajs.use(['gallery/jcrop/0.9.12/jcrop.css','gallery/jcrop/0.9.12/jcrop.js'] ,function(){

FileAPI.event.on(el, 'change', function (evt){

var files = FileAPI.getFiles(evt); // Retrieve file list

FileAPI.filterFiles(files, function (file, info){

if( !/^image/.test(file.type) ){

alert('图片格式不正确');

return false;

}

else if(file.size > 20 * FileAPI.MB){

alert('图片必须小于20M');

return false;

}

else{

return true;

}

}, function (files, rejected){

console.log(files);

if( files.length ){

var file = files[0];

var img0 = FileAPI.Image(file);

var img1 = FileAPI.Image(file);

var ratio = 0;

FileAPI.getInfo(file, function (err, info) { //get image ratio

if (!err) {

if (info.width > info.height) {

ratio = info.width / 500;

}

else {

ratio = info.height / 500;

}

}

});

img0.resize(500, 500, 'max') //place image and register jcrop

.get(function(err, img) {

$('#img2').empty();

$('#img2').append($(img));

$('#img2').children().Jcrop({

aspectRatio: 1,

bgColor: 'rgba(0,0,0,0.4)',

onSelect: function(c) {

img1.matrix.sx = c.x * ratio;

img1.matrix.sy = c.y * ratio;

img1.matrix.sw = c.w * ratio;

img1.matrix.sh = c.h * ratio;

img1.matrix.dw = 500;

img1.matrix.dh = 500;

img1.get(function(err, img) {

// $('#img3').empty();

// $('#img3').append($(img));

$('#img3').html($(img));

});

}

});

});

$('#btn').on('click',function(){

FileAPI.upload({

// url: '/testUpFile/upFile',

// headers: { 'Content-Type': 'multipart/form-data' },

files: { images: img1 },

progress: function (evt){ /* ... */ },

complete: function (err, xhr){ /* ... */

//alert(xhr.responseText);

console.log(xhr);

}

});

});

}

});

});

});

完整代码:

<!DOCTYPE html>

<html>

<head>

<title>TODO supply a title</title>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width">

<script src="./jquery.min.js"></script>

<script src="./jcrop/jquery.Jcrop.min.js"></script>

<link href="./jcrop/jquery.Jcrop.min.css" rel="stylesheet">

</head>

<style>

.upload-btn {

width: 130px;

height: 25px;

overflow: hidden;

position: relative;

border: 3px solid #06c;

border-radius: 5px;

background: #0cf;

}

.upload-btn:hover {

background: #09f;

}

.upload-btn__txt {

z-index: 1;

position: relative;

color: #fff;

font-size: 18px;

font-family: "Helvetica Neue";

line-height: 24px;

text-align: center;

text-shadow: 0 1px 1px #000;

}

.upload-btn input {

top: -10px;

right: -40px;

z-index: 2;

position: absolute;

cursor: pointer;

opacity: 0;

filter: alpha(opacity=0);

font-size: 50px;

}

</style>

<body>

<div>

<!-- "js-fileapi-wrapper" -- required class -->

<div class="js-fileapi-wrapper upload-btn" id="choose">

<input name="files" type="file" multiple />

<button id="btn">上传</button>

</div>

<div id="images">

<p style="margin-top: 40px;"></p>

<div id="img2" ></div>

<div id="img3"></div>

</div>

</div>

<script>window.FileAPI = { staticPath: './fileapi/' };</script>

<script src="./fileapi/FileAPI.min.js"></script>

<script>

var el = $('input').get(0);

FileAPI.event.on(el, 'change', function (evt){

var files = FileAPI.getFiles(evt); // Retrieve file list

FileAPI.filterFiles(files, function (file, info){

if( !/^image/.test(file.type) ){

alert('图片格式不正确');

return false;

}

else if(file.size > 20 * FileAPI.MB){

alert('图片必须小于20M');

return false;

}

else{

return true;

}

}, function (files, rejected){

if( files.length ){

var file = files[0];

var img0 = FileAPI.Image(file);

var img1 = FileAPI.Image(file);

var ratio = 0;

FileAPI.getInfo(file, function (err, info) { //get image ratio

if (!err) {

if (info.width > info.height) {

ratio = info.width / 500;

}

else {

ratio = info.height / 500;

}

}

});

img0.resize(500, 500, 'max') //place image and register jcrop

.get(function(err, img) {

$('#img2').empty();

$('#img2').append($(img));

$('#img2').children().Jcrop({

aspectRatio: 1,

bgColor: 'rgba(0,0,0,0.4)',

onSelect: function(c) {

img1.matrix.sx = c.x * ratio;

img1.matrix.sy = c.y * ratio;

img1.matrix.sw = c.w * ratio;

img1.matrix.sh = c.h * ratio;

img1.matrix.dw = 500;

img1.matrix.dh = 500;

img1.get(function(err, img) {

// $('#img3').empty();

// $('#img3').append($(img));

$('#img3').html($(img));

});

}

});

});

$('#btn').on('click',function(){

FileAPI.upload({

url: '/testUpFile/upFile',

files: { images: img1 },

progress: function (evt){ /* ... */ },

complete: function (err, xhr){ /* ... */

//alert(xhr.responseText);

}

});

});

}

});

});

</script>

</body>

</html>

以上所述就是本文的全部内容了,希望大家能够喜欢。

中国足彩网信息请查看IT技术专栏

中国足彩网信息请查看脚本栏目
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 足球游戏_中国足彩网¥体育资讯$ 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标