JavaScript 图片切割效果

序一(08/07/21)

很久之前就在一个网站的截取相片的功能中看到这个效果,也叫图片裁剪、图片剪切(设置一下也可以做出放大镜等类似的效果)。
当时觉得很神奇,碍于水平有限,没做出来。
前些日子突然想做一个透镜效果,就突然想到了这个效果,于是找出当年“珍藏”的代码决定一尝所愿。

序二(08/12/06)

自上一个版本的图片切割效果出来后,虽然也经常看到“框架开发这个如何如何容易”之类的评论,但也受到很多人的肯定,小弟在此感谢大家的支持。
上一个版本由于是初次接触这类效果,而且是三个大功能一起开发,能力所限,所以仅仅是实现了效果就完成了。
后来我知道这个效果叫ImageCropper,找了些这类效果参考,完善了切割的部分。
近来我把其中的拖放效果缩放效果单独出来研究,经过整理和完善,再套进切割效果,个人感觉效果已经不错了。
要说明的是这个只是一个效果,并不是真正的切割图片,要获取真正的切割图片请参考图片切割系统

先看看效果:




图片地址:


程序说明

这个效果主要分三个部分:层的拖放、层的缩放、图片切割(包括预览)。
其中层的拖放层的缩放我已经在其他两篇文章中有详细说明,这里就说说图片切割这部分吧。

【图片切割】

关于图片切割的设计,有三个方法:
1.定位四个半透明层,遮住要盖住的部分,没试过,感觉比较麻烦;
2.把图片设为背景图,通过设置背景图的位置来实现,但这样的缺点是只能按图片的正常比例实现,不够灵活;
3.把图片放到切割对象里面,通过设置图片的top和left实现,这个方法是可行,但下面有更简单的方法实现;
4.通过设置图片的clip来实现。

这里介绍方法4的实现方法,这个方法是从当年“珍藏”的代码中看到的,先说说clip:
clip的作用是“检索或设置对象的可视区域。可视区域外的部分是透明的。”
依据上-右-下-左的顺序提供自对象左上角为(0,0)坐标计算的四个偏移数值来剪切。
例如:

div { position:absolute; width:60px; height:60px; clip:rect(0 20 50 10); }


注意position:absolute的设置是必须的(详细看手册)。

下面说说具体实现原理:
首先需要一个容器(_Container),容器里面会插入三个层:
底图层(_layBase):那个半透明的图片;
切割层(_layCropper):正常显示的那个部分;
控制层(_layHandle):就是控制显示的那个部分。

其中为了底图层和切割层是程序自动创建的图片,控制层是自己定义的层(程序中是一个div)。
底图层和切割层必须完全重合,程序中把这两个层都绝对定位到了左上角:

this._layBase.style.top = this._layBase.style.left = this._layCropper.style.top = this._layCropper.style.left = 0;


层叠顺序也要设置一下保证各层顺序。

下面说说各部分的作用:
容器:除了容器本身的作用,通过设置其背景色来设置透明的渐变色,由于图片本身没有背景色所以要通过容器来设置;
底图层:在容器最底部,作用是显示非选择区域的图片,透明效果就是在这层设置;
切割层:最关键的一个层,在底图层和控制层之间,在这个层通过clip设置其可视区域来实现切割图片的效果;
控制层:位于顶部,拖放(_drag)和缩放(_resize)效果就是在这个层实现,根据其拖放和缩放的结果控制切割层的切割效果。

这里要注意的是控制层的_drag拖放效果的Transparent要设为true(详细看拖放效果的透明背景bug部分)。
要使用缩放需要把Resize设为true,并设置各个拖拉对象,程序通过_resize设置缩放的比例和最少范围(详细看拖拉缩放效果)。

下面说说控制层如何控制切割效果:
控制层的拖放和缩放过程中加入了SetPos设置切割样式程序,在SetPos程序中根据控制层的样式设置切割层的可视区域范围:

var p = this.GetPos();
this._layCropper.style.clip = "rect(" + p.Top + "px " + (p.Left + p.Width) + "px " + (p.Top + p.Height) + "px " + p.Left + "px)";


其中GetPos程序,它可以把当前控制层的样式参数作为一个对象返回:

with(this._layHandle){
    
return { Top: offsetTop, Left: offsetLeft, Width: offsetWidth, Height: offsetHeight }
}


如果理解了的话就会觉得其实原理挺简单的,不过要想出来还是要一定创意才行,为想出这个方法的人致敬!

【切割预览】

预览效果需要设置Preview属性为预览容器对象,程序会自动给容器插入一个预览对象(图片)。
预览效果的关键在于如何根据控制层的数据来给预览对象定位,这个主要在SetPreview预览效果程序中处理。
首先根据控制层的高宽比置预览对象显示的宽和高(不是图片本身的宽高哦),这里可以用GetSize程序获取:

var p = this.GetPos(), s = this.GetSize(p.Width, p.Height, this.viewWidth, this.viewHeight), scale = s.Height / p.Height;


其中GetSize获取尺寸程序可以根据图片实际大小按比例缩放到要设置的大小:

Code


可以看出如果后两个参数(viewWidth和this.viewHeight)都不设置就会按原来大小显示了,

然后再按预览图跟控制层的比例设置预览图的样式参数:

var pHeight = this._layBase.height * scale, pWidth = this._layBase.width * scale, pTop = o.Top * scale, pLeft = o.Left * scale;


最后根据参数对预览对象进行样式设置和切割:

Code


这里有点烦乱,但应该不难理解就不详细说明了。

【图片大小】

容器的大小一般是固定的,但图片的大小就不是固定的,这里又可以使用SetSize程序用来设置图片大小:

Code


有了图片大小就可以用来设置拖放和缩放的范围限制了:

Code


ps:程序中的Init程序是用来把个性设置呈现出来,所以一般设置过属性之后(例如图片地址、透明度等)就执行一次Init程序就可以显示效果了。

【ie6渲染bug】

拖放效果中说到插入一个div解决ie的透明背景bug,这里就需要修复这个bug。
缩放效果配合使用时,不得不说ie6的一个渲染bug,用下面的代码测试(ie6):

Code


可以对比ie7的效果,可以看出里面的div虽然高度设置了100%,但在外面的div修改高度之后,却不知什么原因没有填充了(外面的div渲染后,没有触发里面的div再渲染)。

解决这个bug的关键是使里面的div能再渲染,这里有几个方法可以解决:
1,设置控制层的overflow为hidden,好处是只需要设置一次,但这个样式会影响其他效果,当然在不影响效果的情况下这个是最好的方法;
2,在缩放的时候,通过修改控制层的某些样式,使里面的div再渲染,这样的样式包括zoom,display(应该还有其他吧);
3,在缩放的时候,通过修改插入div的某些样式,使其再渲染,这样的样式包括display(zoom也不行);
程序中是通过修改_layHandle的zoom解决的:

if(isIE6){ with(this._layHandle.style){ zoom = .9; zoom = 1; }; };


ps:这个bug的原因貌似跟ie的layout有关,但我查了一下还是没弄清楚,谁有详细的介绍或解析务必跟我分享一下啊。


使用说明

实例化时有三个必要参数:容器对象、控制层、图片地址:

var ic = new ImgCropper("bgDiv""dragDiv""1.jpg");


有以下这些可选参数和属性:
属性:默认值//说明
Opacity: 50,//透明度(0到100)
Color:  "",//背景色
Width:  0,//图片高度
Height:  0,//图片高度
//缩放触发对象
Resize:  false,//是否设置缩放
Right:  "",//右边缩放对象
Left:  "",//左边缩放对象
Up:   "",//上边缩放对象
Down:  "",//下边缩放对象
RightDown: "",//右下缩放对象
LeftDown: "",//左下缩放对象
RightUp: "",//右上缩放对象
LeftUp:  "",//左上缩放对象
Min:  false,//是否最小宽高限制(为true时下面min参数有用)
minWidth: 50,//最小宽度
minHeight: 50,//最小高度
Scale:  false,//是否按比例缩放
Ratio:  0,//缩放比例(宽/高)
//预览对象设置
Preview: "",//预览对象
viewWidth: 0,//预览宽度
viewHeight: 0//预览高度

 

程序代码

Code

 

 

完整实例下载

转载请注明出处:http://www.cnblogs.com/cloudgamer/

如有任何建议或疑问,欢迎留言讨论。

如果觉得文章不错的话,欢迎点一下右下角的推荐。

程序中包含的js工具库CJL.0.1.min.js,原文在这里

posted @ 2008-07-21 01:20 cloudgamer 阅读(109119) 评论(257) 编辑 收藏

评论共3页: 上一页 1 2 3 
 回复 引用 查看   
#158楼[楼主] 2009-06-26 15:38 cloudgamer      
@英斩树
那样的本地路径你放到img的src都显示不了啦

 回复 引用   
#159楼 2009-06-26 15:45 英斩树
@zhiye
那是不行的

真的不行吗?

 回复 引用   
#160楼 2009-06-26 15:46 英斩树
没想到楼主是个这么勤奋的人,回复这么快!
 回复 引用   
#161楼 2009-06-26 15:52 英斩树
我本来是用微软的滤镜显示图片的,这样可以显示本地图片:
function ShowImage(path) {
//处理前是原图,先将其隐藏,
document.all.divShow.style.visibility = "hidden";
document.all.divShow.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = path;
document.all.divShow.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").sizingMethod = "image";
//过一小会获取div的宽高.
setTimeout("setImg(document.all.divShow)", 100);
这个paht是本地路径。不过其实这段代码也是别人写的。

 回复 引用 查看   
#162楼[楼主] 2009-06-26 16:12 cloudgamer      
@英斩树
这个一般是用来图片上传预览的
很麻烦而且不兼容

 回复 引用   
#163楼 2009-06-28 17:16 啊[未注册用户]
如何才能读取到<img id="imgCreat" style="display:none;" /> 这里的src地址
 回复 引用 查看   
#164楼[楼主] 2009-06-28 21:18 cloudgamer      
@啊
imgCreat.src?

 回复 引用   
#165楼 2009-06-29 02:25 www.7di.net[未注册用户]
楼主,你自己看看吧,http://www.open-open.com/ajax/ImageCropper.htm
不是打击你,随便跳出一个来好像都比你的强悍。

 回复 引用 查看   
#166楼[楼主] 2009-06-29 08:22 cloudgamer      
@www.7di.net
呵呵
我也没强迫谁要用我这个啊
而且你能指出强悍的地方在哪里?
估计你代码也没看吧

 回复 引用   
#167楼 2009-07-02 14:59 zhangyuan[未注册用户]
楼主在不在啊?
 回复 引用 查看   
#168楼[楼主] 2009-07-02 15:02 cloudgamer      
@zhangyuan
在?

 回复 引用   
#169楼 2009-07-02 15:41 zhangyuan[未注册用户]
你有没有QQ啊,这个太慢了,我有几个问题想请教一下
 回复 引用   
#170楼 2009-07-02 15:54 zhangyuan
楼主在不在?
 回复 引用 查看   
#171楼[楼主] 2009-07-02 15:59 cloudgamer      
@zhangyuan
工作中,没上q
你问的是这个吧
能不能不用鼠标,加“放大”和“缩小”按钮来进行绽放呢?
那你用按钮点击设置控制层的width和height就行啦

 回复 引用   
#172楼 2009-07-02 16:04 zhangyuan
能不能贴出修改的代码啊,你这个太高深了,现在急需用啊
 回复 引用 查看   
#173楼[楼主] 2009-07-02 16:36 cloudgamer      
@zhangyuan
想要代码的话还是自己分析吧

 回复 引用   
#174楼 2009-07-03 14:06 zhangyuan[未注册用户]
楼主在不在?
 回复 引用 查看   
#175楼[楼主] 2009-07-03 14:44 cloudgamer      
@zhangyuan
还有什么问题?

 回复 引用   
#176楼 2009-07-05 15:33 fzsmllj[未注册用户]
楼主,我用您的这个代码结合另外的一个ImgCropper.ashx文件弄了一个在线用户头像,可以保存到本地文件夹,可是却无法读取这个路径
我现在的思路有两个:
1.能不能让ImgCropper.ashx保存的路径和我上传文件的路径一样?
2.如何读取ImgCropper.ashx保存的路径?

 回复 引用 查看   
#177楼[楼主] 2009-07-05 15:43 cloudgamer      
@fzsmllj
保存文件路径是后台设置的啊
你想保存哪里就设哪里就是了
不懂的话你自己找保存文件的资料看看吧

 回复 引用   
#178楼 2009-07-05 16:03 fzsmllj[未注册用户]
可能是我之前没有说明白,我说的图片的地址 比如:upload/1.jpg 就是如何读取到这个地址?
 回复 引用 查看   
#179楼[楼主] 2009-07-05 17:42 cloudgamer      
@fzsmllj
类似这样咯
http://xxx/upload/1.jpg
做过网站开发都明白吧

 回复 引用 查看   
#180楼 2009-07-06 10:57 chinacto      
谢谢,还有个问题,就是我如果要切图片范围外的怎么办?
 回复 引用 查看   
#181楼[楼主] 2009-07-06 11:07 cloudgamer      
@chinacto
范围外什么意思

 回复 引用 查看   
#182楼 2009-07-06 15:06 chinacto      
比如一个长方型图片我要切成正方型的,但是左右两边还有部分图没有切到,因为正方型比例高度受到限制,不能更宽了.我是可以高度不现在在图片内,拉伸到图片之外,这样宽度才能满足需要,并且之外的部分希望用白色来填充,这样就可以完整的切成正方型图片了.
 回复 引用 查看   
#183楼[楼主] 2009-07-06 15:59 cloudgamer      
@chinacto
实际的切割程序是在后台的
你可以在实际切割的时候设置成需要的效果

 回复 引用 查看   
#184楼 2009-07-06 22:31 chinacto      
我知道,可是前提还是要选择到图片以外的位置啊,目前只能选择到图片边距内的范围啊.我是想选择到边距外的范围
 回复 引用 查看   
#185楼[楼主] 2009-07-07 09:08 cloudgamer      
@chinacto
我这个是自动缩放到适合大小
看SetSize部分
你可以自己修改那部分应该可以做到你那个效果

 回复 引用   
#186楼 2009-07-08 21:19 lc12d[未注册用户]
你好,我用了你的方法,但是在预览时出了问题,预览区随切割区移动显示预览效果,而不像你的预览区固定,请指教
 回复 引用   
#187楼 2009-07-08 21:38 lc12d[未注册用户]
就好像地图固定了,然后在图片上切割显示,切到哪就显示那,不是固定显示在一个地方
 回复 引用 查看   
#188楼 2009-07-08 21:43 lsjwzh      
。。。没仔细看楼主的实现了,不过从中受到了启发。。谢了。
 回复 引用 查看   
#189楼[楼主] 2009-07-08 23:02 cloudgamer      
@lsjwzh
谢谢支持

@lc12d
你还是再仔细研究一下代码吧

 回复 引用   
#190楼 2009-07-09 12:53 lc12d[未注册用户]
var imgic=new Image();
imgic.src=document.getElementById("choosepic").value;
imgic.style.width=document.getElementById(s).width;
imgic.style.height=document.getElementById(s).height;

var lookview= document.getElementById("view").appendChild(imgic);
lookview.style.position="absolute";


lookview.style.clip = "rect(" + pTop + "px " + (pLeft + 100) + "px " + (pTop + 100) + "px " + pLeft + "px)";
lookview.style.top=104;
lookview.style.left=441;


你帮我看看吧,我实在写不出你那样的代码现在,这个就是用来预览的代码,先在js中定义一个Image,(就是被切割的图)然后把它添加到DIV(view)中去,然后切割,可是它切割不是切割出一块图,是切一块,然后再切一块,直到全图显示出来

 回复 引用 查看   
#191楼[楼主] 2009-07-09 14:31 cloudgamer      
@lc12d
切割预览那里我已经详细说明了吧
你还是自己来吧,我实在没空看代码,只能解析一下

 回复 引用   
#192楼 2009-07-09 14:59 lc12d[未注册用户]
终于可以了,谢谢楼主
 回复 引用 查看   
#193楼[楼主] 2009-07-09 15:05 cloudgamer      
@lc12d
那就好了

 回复 引用   
#194楼 2009-07-25 12:15 cfish[未注册用户]
裁剪了之后,怎么保存裁剪的图片呢?
 回复 引用 查看   
#196楼 2009-07-27 17:10 argb      
var BindAsEventListener = function(object, fun) {
var args = Array.prototype.slice.call(arguments).slice(2);
return function(event) {
return fun.apply(object, [event || window.event].concat(args));
}
}

BindAsEventListener(this, this.Start, fun)

这里我不大明白,这里的this.Start有什么用,args应该是[fun]这个数组,
[event || window.event].concat(args)应该得到[event,fun]这个数组,这样的话fun.apply(object, [event || window.event].concat(args))应该是fun.apply(object,[event,fun]),可是fun只需要一个event参数 那个多处来的fun什么用,我搞不明白了 ,请楼主指点迷津?是不是我分析错了?

 回复 引用 查看   
#197楼[楼主] 2009-07-27 17:55 cloudgamer      
@argb
this.Start是要绑定的函数
fun是this.Start的参数
Start: function(e, fun, touch)
就是里面的第二个参数(貌似第三个参数是没用的,我忘记去掉了)

 回复 引用   
#198楼 2009-07-30 20:30 海寂寞[未注册用户]
感谢楼主,非常好的东西,找了好久终于找到,感谢感谢!

今天下载来捣鼓了半天也没有存到服务器里。希望楼主帮我一下,我业余学习的ASP,对JS不懂。但好像大概估计似乎能看明白一点点,难啊……

//保存图片文件 这句放到哪个文件的哪里?
string filePathAndName = HttpContext.Current.Server.MapPath("img/") + "01.jpg" ;
bmPhoto.Save(filePathAndName, System.Drawing.Imaging.ImageFormat.Jpeg) ;

后面带的分好应该是JS文件里的。但不知到方那个文件里?对JS不懂。非常想知道怎么用这个。生成的新的文件名是否可以放到表单的文本域里?这样方便写入数据库。

在图片切割页面里也提了同样的问题。感谢楼主!

 回复 引用   
#199楼 2009-07-30 21:46 海寂寞[未注册用户]
终于搞定了,谢谢楼主原创!
 回复 引用   
#200楼 2009-07-31 08:53 海寂寞[未注册用户]
楼主在吗?有个问题,就是页面必须刷新才能拖得动裁剪框以及其他操作,刚才打开收藏的这个页面也一样,不知道是我电脑问题,还是大家都一样呢?怎么处理?
 回复 引用 查看   
#201楼[楼主] 2009-07-31 10:52 cloudgamer      
@海寂寞
是不是js没载入完

 回复 引用   
#202楼 2009-07-31 11:52 海寂寞[未注册用户]
谢谢楼主回复!我拷贝地址到IE里打开,或者点击收藏夹里的打开第一次都拖动不了和其他的操作。我看客户端的HTML源文件里有JS代码,和源代码一行一行的对的,没有丢失什么。很奇怪。无论什么时候打开必须要刷新一下才能正常操作。

写入数据库和另存新裁剪过的图片名都解决了,昨天捣鼓了大半夜。呵呵,太谢谢你了!

 回复 引用   
#203楼 2009-07-31 12:14 海寂寞[未注册用户]
博主:你好!
我试着把试用比例默认使用上,意思就是不让客户自己随意裁剪高宽,必须按照比例缩放。我查找了那个文本域,按照ID找过去,修改了true : false;但好像不管用?能修改吗?在哪里?感谢……

 回复 引用 查看   
#204楼[楼主] 2009-07-31 13:48 cloudgamer      
@海寂寞
Scale: false,//是否按比例缩放
我这里没刷新的情况哦
你下我的实例本地试试

 回复 引用   
#205楼 2009-07-31 21:06 海寂寞[未注册用户]
感谢博主!
刷新的问题可能是我的机器的事,我上传到服务器用别的机器测试下,已经下载您的实例,问题也找到了的,十分的感谢!


 回复 引用   
#206楼 2009-07-31 21:28 海寂寞[未注册用户]
博主:发现个新的问题,缩小大图后裁剪的图片好像没有QQ截图的清楚,您试试?这个可以调整参数吗?给您添麻烦了……
 回复 引用 查看   
#207楼[楼主] 2009-07-31 21:32 cloudgamer      
@海寂寞
图片处理是后台的问题了
我只是根据参数用最简单的方法截取,图片处理方面你可以找找其他文章

 回复 引用   
#208楼 2009-07-31 21:43 海寂寞[未注册用户]
好的,谢谢你博主!

图片保存我是这样实现的:
NewPics 是一个变量,物理路径加文件名,在ASP文件里保存的。
在ASP文件里用这句(bmPhoto.Save(filePathAndName, System.Drawing.Imaging.ImageFormat.Jpeg) ;
)我这里保存不了,就用了自己知道的方法。
'保存被裁剪的图片 后加的 2009-7-30
Jpeg.Save (NewPics)
Jpeg.Close


 回复 引用 查看   
#209楼[楼主] 2009-08-01 10:18 cloudgamer      
@海寂寞
那个貌似是.net的啊
asp用你那个方法就行

 回复 引用   
#210楼 2009-08-03 14:42 还寂寞[未注册用户]
是的,我用ASP写的。保存清晰度也找到答案了,谢谢博主你的好代码。放到这里测试了,博主在广东?

 回复 引用 查看   
#211楼[楼主] 2009-08-03 18:43 cloudgamer      
@还寂寞
是的在广东

 回复 引用 查看   
#212楼 2009-10-18 19:58 GreatGhoul      
效果是相当的不错,切割得很漂亮。
很欣赏博主自己动手做这个效果,如果懂得了原理,用框架做起来就更得心应手了。期待开发一个jQuery Plugin出来。

 回复 引用   
#213楼 2009-10-19 14:42 virgil_zhy[未注册用户]
楼主,你好,图片的url 是本地图片,图片显示不出来,为什么?
 回复 引用 查看   
#214楼[楼主] 2009-10-21 10:04 cloudgamer      
@virgil_zhy
不支持本地图片

@GreatGhoul
谢谢支持

 回复 引用   
#215楼 2009-11-05 17:54 dragon★龙[未注册用户]
博主 您好!我想问下,我想把选择框定死,也就是选出来的图片大小是我预先设置好的,只让他们拖动不让伸缩,修改哪点程序?
 回复 引用 查看   
#216楼[楼主] 2009-11-05 19:37 cloudgamer      
@dragon★龙
那是不同的效果啊

 回复 引用   
#217楼 2009-11-06 10:14 dragon★龙[未注册用户]
@cloudgamer
那意思是在这个程序上面就没法解决了? 不管怎么说都谢谢您的回答!O(∩_∩)O~

 回复 引用 查看   
#218楼[楼主] 2009-11-06 10:26 cloudgamer      
@dragon★龙
因为是不同的效果,虽然有些相似

 回复 引用   
#219楼 2009-11-06 17:31 dragon★龙[未注册用户]
@cloudgamer
谢谢博主的帮助!呵呵 这个问题我已经解决了,就是设置下var ic = new ImgCropper这里面的一个resize属性,设置为false,就不能改拖动层的大小了!谢谢楼主的博客!呵呵 也真诚邀请您到我的博客做客!很高兴,也很希望你能和您交个朋友!O(∩_∩)O~

 回复 引用 查看   
#220楼[楼主] 2009-11-06 17:34 cloudgamer      
@dragon★龙

是这个意思
呵呵

 回复 引用   
#221楼 2009-12-23 09:19 正宗[未注册用户]
@cloudgamer
第二张图的妹妹露腚很是好看...

 回复 引用 查看   
#222楼 2010-01-15 14:50 suya.pan      
圆形的图片切割,有办法实现吗?
 回复 引用 查看   
#223楼[楼主] 2010-01-15 14:54 cloudgamer      
@正宗
呵呵

 回复 引用 查看   
#224楼[楼主] 2010-01-15 14:58 cloudgamer      
@suya.pan
圆形的话(或其他形状)一般可以利用半透明的png来做选框
其他就没详细研究过,估计也大同小异

 回复 引用 查看   
#225楼 2010-03-04 15:18 徐培华      
太强悍了
根本不敢相信楼主研究js一年多就能达到这个水平。。

 回复 引用 查看   
#226楼 2010-05-29 20:32 小轰      
学习到了!
我是一直觉得,js特别的难的,呵呵。

 回复 引用 查看   
#227楼 2010-05-29 20:32 小轰      
楼主厉害。
 回复 引用 查看   
#228楼[楼主] 2010-05-29 21:28 cloudgamer      
@小轰
@徐培华
谢谢支持

 回复 引用   
#229楼 2010-08-30 15:04 江江酱[未注册用户]
我找了好久呀,这东西,还是最喜欢JS做的东西。
 回复 引用 查看   
#230楼 2010-09-20 11:36 xoo      
膜拜..LZ 最好能出个视频教程..
 回复 引用 查看   
#231楼[楼主] 2010-09-20 11:49 cloudgamer      
@江江酱
谢谢支持

 回复 引用 查看   
#232楼[楼主] 2010-09-20 11:49 cloudgamer      
@xoo
视频也太麻烦了
教程就够了

 回复 引用   
#233楼 2010-10-23 00:51 一个hao人[未注册用户]
博主写的非常不错!!这样的JAVASCRIPT特效代码给我们的网站带来了极大的易用性!谢谢博主
 回复 引用   
#234楼 2010-12-01 11:42 nslove[未注册用户]
google的浏览器兼容有问题啊!放大缩小不行啊!希望老大能够看一下!
 回复 引用 查看   
#235楼[楼主] 2010-12-01 13:49 cloudgamer      
@一个hao人
谢谢支持

 回复 引用 查看   
#236楼[楼主] 2010-12-01 14:36 cloudgamer      
@nslove
那是因为google浏览器加载同一个图片不会触发onload
你需要加一段
xxxx.src="";
再加载才行

 回复 引用 查看   
#237楼 2010-12-03 08:46 sgof      
一个很好很好的牛人
 回复 引用 查看   
#238楼 2011-04-02 14:40 _深蓝      
你好,我把浏览器的安全级别调低之后,加载本地图片,诸如“D:\pic\1.jpg”,却有的时候可以显示,有的时候不能显示,这是为什么呢?
在我这里,“D:\pic\1.jpg”可以显示,"D:\pic\4.jpg"却不能显示,这是为什么呢?是不是和图片的质量之类的有关系呢? 我把1.jpg改成9.jpg能显示,把4.jpg改成1.jpg还是不能显示?
请问有什么解决办法吗?

谢谢!

 回复 引用 查看   
#239楼 2011-04-03 13:50 雨夜临风      
昨天和今天都在你的博客里泡着,感觉到博主至少具备3种特质:1、好人;2热心人;3谦虚的人。难得!!!
 回复 引用 查看   
#240楼[楼主] 2011-04-03 14:27 cloudgamer      
@_深蓝
这个不好说 可以把图片发给我试试

 回复 引用 查看   
#241楼[楼主] 2011-04-03 14:28 cloudgamer      
@sgof
@雨夜临风
谢谢支持

 回复 引用 查看   
#242楼 2011-04-04 13:56 _深蓝      
你好,图片我已经发到你的QQ邮箱里了
谢谢!

 回复 引用 查看   
#243楼 2011-05-19 11:26 melody&bobo      
在aspx里面引入你的三个JS文件会报错 有兼容性问题 求解 ~~
 回复 引用 查看   
#244楼[楼主] 2011-05-19 20:20 cloudgamer      
@melody&bobo
编码问题吧

 回复 引用 查看   
#245楼 2011-06-23 10:59 水淼      
能不能让无论拉那个变都同时扩大或者缩小各个边框啊????
 回复 引用 查看   
#246楼[楼主] 2011-06-23 16:09 cloudgamer      
@水淼
应该可以 自己改改吧

 回复 引用 查看   
#247楼 2011-07-05 09:40 凯丁古乐      
学习了,呵呵
 回复 引用 查看   
#248楼 2011-07-08 10:22 蓝丶 sky      
lz还在吗?想请问下你就是在裁减的时候,那块可视区域没有被背景的遮罩住,也就是透明到图片,这个怎么做的呢?
 回复 引用 查看   
#249楼[楼主] 2011-07-25 08:08 cloudgamer      
@凯丁古乐
谢谢支持

 回复 引用 查看   
#250楼[楼主] 2011-07-25 08:09 cloudgamer      
@蓝丶 sky
看文章

 回复 引用 查看   
#251楼 2011-09-06 15:33 jason lin      
LZ,如何把拖动层的宽高比例定为一样,也就是正方形,拖动时,比例不变,但大小可变
 回复 引用 查看   
#252楼 2011-09-06 15:36 jason lin      
好像是Scale:true,宽高大小要设成一样还没找到,我再找找

已解决,LZ的js功力确实很深厚。

 回复 引用   
#253楼 2011-09-06 22:53 eviavia[未注册用户]
楼主,很感谢你的文章,让我学到不少!有个问题需要请教下:
框出比较小的区域,预览图可以放大且能够很清晰显示那部分,但是保存后的图片尺寸就是框出来的尺寸,没有放大的,也不清晰。我想要保存的效果和预览图的一样,这个在哪里修改呢?

 回复 引用   
#254楼 2011-09-06 23:17 eviavia[未注册用户]
@eviavia
仔细看了楼主的教程,突然懂了,已经解决了~
Jpeg.Crop CInt(Request("x"))*jpeg.width/CInt(Request("pw")), CInt(Request("y"))*jpeg.height/CInt(Request("ph")), CInt(Request("w"))*jpeg.width/CInt(Request("pw")) + CInt(Request("x"))*jpeg.width/CInt(Request("pw")), CInt(Request("h"))*jpeg.height/CInt(Request("ph")) + CInt(Request("y"))*jpeg.height/CInt(Request("ph"))
非常感谢!!

 回复 引用   
#255楼 2011-11-05 11:57 CoupDeGrace[未注册用户]
还有一个问题我一直解决不了,就是如何把预览效果的div里面的内容生成新的图片保存啊,就比如用户要裁剪图片从而生成自己的头像,不知道怎么办了?希望楼主能指点指点。对于你的劳动成果我表示十分敬佩啊
 回复 引用   
#256楼 2011-11-23 09:22 zhaoting[未注册用户]
把这张图片在这个效果中怎样实现点击选项卡可以显示反面,
还可以旋转,获得焦点

 回复 引用 查看   
#257楼 2011-12-02 21:39 njl_041x      
向博主学习,博主技术达人啊!
评论共3页: 上一页 1 2 3 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1247267 tLrj5VJzWTU=