Javascript 如何创建与polyvore提供的裁剪功能相似的裁剪功能
我如何在图像上提供裁剪功能,类似于我在下面的屏幕截图中提供的功能Javascript 如何创建与polyvore提供的裁剪功能相似的裁剪功能,javascript,jquery-plugins,Javascript,Jquery Plugins,我如何在图像上提供裁剪功能,类似于我在下面的屏幕截图中提供的功能 这不是100%,但从外观上看,它使用了带有React扩展的React.js,这可能是您想要的。从你的照片来看,这可以解决你想要的问题 用于拖动事件(拖动零件) 用于鼠标事件(裁剪部分) 一旦你包含了脚本,你就可以侵入代码 React.js:用于构建用户界面的JAVASCRIPT库 React extensions:让您轻松处理事件,例如单击事件、键盘事件、dragdrop事件。。。等 这不是一个插件。事实上,似乎根本
这不是100%,但从外观上看,它使用了带有React扩展的React.js,这可能是您想要的。从你的照片来看,这可以解决你想要的问题 用于拖动事件(拖动零件) 用于鼠标事件(裁剪部分)
一旦你包含了脚本,你就可以侵入代码
React.js:用于构建用户界面的JAVASCRIPT库
React extensions:让您轻松处理事件,例如单击事件、键盘事件、dragdrop事件。。。等
- 这不是一个插件。事实上,似乎根本没有JQuery
- 开发人员似乎复制了FB Toolkit的未公开部分(图片裁剪)和Handle Bars.JS的部分内容
- 动画是用SVG制作的
ImageItem.prototype.startCrop = function() {
LassoDialog.showExpanded(this)
};
开发人员从FB的源代码中获取了这一点,并对其进行了轻微修改:
function FBPhoto(b) {
this.fbImgUrl = b.imgurl;
this.pid = b.pid;
FBPhoto.superclass.constructor.call(this, b);
var a = 3;
Event.addListener(this.img, "error", function() {
a--;
if (a) {
this.img.setSrc("");
window.setTimeout(Event.wrapper(function() {
this.updateImage()
}, this), 200)
}
}, this);
if (!this.rect.width()) {
getNaturalWidthHeight(b.imgurl, Event.wrapper(function(c, d) {
if (c && d) {
b.w = c;
b.h = d
} else {
b.w = 200;
b.h = 200
}
b.x = 0;
b.y = 0;
this.rect = new Rect(-b.w / 2, -b.h / 2, b.w / 2, b.h / 2);
this.translation = new Point(b.x + b.w / 2, b.y + b.h / 2);
Event.trigger(this, "change");
Event.trigger(this, "sized", this)
}, this))
}
}
然后扩展了该方法:
extend(FBPhoto, ImageItem);
FBPhoto.mapImgUrl = function(a, b) {
var d = UI.sizeMap[b].dim;
var c;
if (d < 100) {
c = "t"
} else {
if (d < 150) {
c = "s"
} else {
}
}
if (c) {
a = a.replace(/_n\.jpg/, "_" + c + ".jpg").replace(/\/n([^\/]*)\.jpg$/, "/" + c + "$1.jpg")
}
return a
};
FBPhoto.prototype.startCrop = function() {
LassoDialog.showSimple(imgUrl, this, {header: loc("Crop your friend's face by drawing a path around it..."),onSuccess: Event.wrapper(function(b, a) {
this.mask_spec = b || [];
this.updateImage();
Event.trigger(this, "updateactions", this);
this.setDimensions(a);
Event.trigger(this, "change")
}, this)})
};
extend(FBPhoto,ImageItem);
FBPhoto.mapImgUrl=函数(a,b){
var d=UI.sizeMap[b].dim;
var c;
如果(d<100){
c=“t”
}否则{
如果(d<150){
c=“s”
}否则{
}
}
如果(c){
a=a.replace(/\/n\.jpg/,“\+c+”.jpg”)。replace(/\/n([^\/]*)\.jpg$/,“/”+c+“$1.jpg”)
}
归还
};
FBPhoto.prototype.startCrop=函数(){
showSimple(imgUrl,this,{header:loc(“通过在朋友的脸周围画一条路径来裁剪它…”),onSuccess:Event.wrapper(函数(b,a){
this.mask_spec=b | |[];
this.updateImage();
触发器(此为“updateactions”,此为);
本条第(a)款;
事件触发(本“变更”)
},本})
};
确定必要的功能
我一直在寻找的功能:
绘制可编辑多边形 我能找到的绘制多边形的最佳库是PolyK.js。遗憾的是,这远远不够完美,但它确实极大地简化了流程 下面可以找到一个基本的可编辑多边形,取自文档
var阶段,s,拖动;
变量poly=[93, 195, 129, 92, 280, 81, 402, 134, 477, 70, 619, 61, 759, 97, 758, 247, 662, 347, 665, 230, 721, 140, 607, 117, 472, 171, 580, 178, 603, 257, 605, 377, 690, 404, 787, 328, 786, 480, 617, 510, 611, 439, 544, 400, 529, 291, 509, 218, 400, 358, 489, 402, 425, 479, 268, 464, 341, 338, 393, 427, 373, 284, 429, 197, 301, 150, 296, 245, 252, 384, 118, 360, 190, 272, 244, 165, 81, 259, 40, 216];
var dots=[];
函数Go(){
阶段=新阶段(“c”);
s=新精灵();
阶段。添加儿童;
对于(变量i=0;i>1;
s、 图形。线条样式(6,0xff0000);
s、 graphics.moveTo(poly[0],poly[1]);
对于(var i=1;i
你检查过他们的源代码吗?我检查过了,但是js被缩小了,因此无法找到他们正在使用的插件检查这个:这个原始形式的问题早在你可以请求赏金之前就应该被关闭了(它需要外部资源)。因为很遗憾,我已经编辑了q
extend(FBPhoto, ImageItem);
FBPhoto.mapImgUrl = function(a, b) {
var d = UI.sizeMap[b].dim;
var c;
if (d < 100) {
c = "t"
} else {
if (d < 150) {
c = "s"
} else {
}
}
if (c) {
a = a.replace(/_n\.jpg/, "_" + c + ".jpg").replace(/\/n([^\/]*)\.jpg$/, "/" + c + "$1.jpg")
}
return a
};
FBPhoto.prototype.startCrop = function() {
LassoDialog.showSimple(imgUrl, this, {header: loc("Crop your friend's face by drawing a path around it..."),onSuccess: Event.wrapper(function(b, a) {
this.mask_spec = b || [];
this.updateImage();
Event.trigger(this, "updateactions", this);
this.setDimensions(a);
Event.trigger(this, "change")
}, this)})
};