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/
posted @ 2008-07-21 01:20 cloudgamer 阅读(34063) 评论(175)  编辑 收藏 网摘 所属分类: Javascript

评论共2页: 上一页 1 2 
  回复  引用  查看    
#101楼2008-09-29 11:52 | 数据绑定者      
支持,我研究下加到我的相册里,使用中还要博主指点啊。
  回复  引用  查看    
#102楼[楼主]2008-09-29 16:42 | cloudgamer      
@数据绑定者
有问题可以到这里留言

  回复  引用    
#103楼2008-09-29 17:22 | view2008[未注册用户]
以前也做过类似的例子,但是在后台将图片进行切割后保存的时候,生成的图片和切割预览有很大的偏差!可不可以将完整的demo发一份给我!谢谢!
  回复  引用  查看    
#104楼[楼主]2008-09-29 17:58 | cloudgamer      
@view2008
这个可能参数没取好或切割参数没设置好
迟点我会把后台代码也放出来

  回复  引用  查看    
#105楼2008-09-29 21:51 | 数据绑定者      
奇怪了,我把你的这个移植到一个JS里,然后在HTML中调用都不成功,楼主可否帮我改个版本?需求是:我从代码中给出一个图片的URL,然后JS绑定上这个图片的路径并能局部放大,谢了。

最好能简单到我给一个img的ID 就可以实现放大的功能,呵呵

  回复  引用  查看    
#106楼[楼主]2008-09-29 23:14 | cloudgamer      
@数据绑定者
实例化的时候第三个参数就是图片url了
也可以像这样修改图片url
//换图片
function Pic(url){
ic.Url = url;
ic.Init();
}

  回复  引用    
#107楼2008-10-29 22:24 | zhyiwww[未注册用户]
这篇文章写得真详细
  回复  引用  查看    
#108楼[楼主]2008-10-30 00:27 | cloudgamer      
@zhyiwww
呵呵
一齐学习

  回复  引用    
#109楼2008-11-02 22:56 | syukguai[未注册用户]
挺酷的效果.
不过拖动过程中对于画面滚动条的支持好像有点问题.
建议改进一下.

  回复  引用  查看    
#110楼[楼主]2008-11-03 09:13 | cloudgamer      
@syukguai
你的意思是拖动时可以滚屏?
这个只好固定滚动范围不让它出现滚屏咯

  回复  引用    
#111楼2008-11-04 17:18 | evanflower[未注册用户]
十分的强悍啊
  回复  引用  查看    
#112楼[楼主]2008-11-04 17:55 | cloudgamer      
@evanflower
谢谢支持

  回复  引用    
#113楼2008-11-10 21:36 | never_online[未注册用户]
你忘记了,在maxthon里是要是浮动的东西都得小心:),这不,现在这个绝对定位的层在马桶里移了两下,就不见了
  回复  引用  查看    
#114楼[楼主]2008-11-10 22:39 | cloudgamer      
@never_online
关闭广告过滤就好了
毕竟不是实际开发就没考虑太多了
不知注意什么可以避免

  回复  引用    
#115楼2008-11-14 09:10 | 周辉[未注册用户]
拖动的时候,FF下没有ie的那么自然。。。
  回复  引用    
#116楼2008-11-14 18:14 | Attribute[未注册用户]
大侠,这个东东你又说很简单,
你那个图片上传我都看了两天了都没理清思路。

  回复  引用  查看    
#117楼[楼主]2008-11-15 14:59 | cloudgamer      
@周辉
最好能说清楚点我才好改进

@Attribute
我这里说的简单都是原理
实现起来当然不是那么简单了

  回复  引用    
#118楼2008-11-17 10:17 | guoyanlong[未注册用户]
怎么没保存啊 截下来的图怎么就能保存下来呢
  回复  引用  查看    
#119楼[楼主]2008-11-17 11:26 | cloudgamer      
  回复  引用    
#120楼2008-11-18 15:28 | wanghd[未注册用户]
靠,无话可说
  回复  引用    
#121楼2008-11-23 14:38 | 覃锐[未注册用户]
我很喜欢JavaScript
但还是个新手,想学习学习,能加我QQ码?
11921530
期待ing....

  回复  引用    
#122楼2008-11-23 14:42 | 覃锐[未注册用户]
从昨天晚上看到你的blog..
就蛮喜欢..呵呵..好多东西都是我平时只能想象的效果...
一直待到今天

  回复  引用  查看    
#123楼[楼主]2008-11-23 15:20 | cloudgamer      
@覃锐
呵呵 谢谢支持
效果本身其实也没什么
里面的技术才是重要的
你可以加我qq不过很少上或者email
欢迎交流!

  回复  引用  查看    
#124楼2008-11-28 14:47 | 圣一辉一楠      
FF IE6 GooGle下面测试 基本无错
  回复  引用    
#125楼2008-12-04 23:41 | ylinRain[未注册用户]
这种东西,不用框架来写是自讨苦吃,随便用个框架,很简单都实现了,而且不用考虑兼容性问题:)
  回复  引用  查看    
#126楼[楼主]2008-12-05 01:09 | cloudgamer      
@圣一辉一楠
谢谢支持

@ylinRain
我也不说什么了
只能说你来错了地方

  回复  引用  查看    
#127楼2008-12-17 16:39 | zhiye      
请问如果要加入一个按钮 实现图片原始大小 怎么实现?
wuhegnqiao@126.com

  回复  引用  查看    
#128楼2008-12-17 19:46 | zhiye      
又发现个问题,如果载入的图片太大,
在有剪裁框的区域,图片只能显示一部分,所以急待加入
图片大小控制的按键

  回复  引用    
#129楼2008-12-20 11:47 | jialongs[未注册用户]
请问这个文件能被植入flex中吗?
  回复  引用  查看    
#130楼[楼主]2008-12-20 14:05 | cloudgamer      
@zhiye
你是要哪里原始大小

@jialongs
flex我不懂哦

  回复  引用  查看    
#131楼2008-12-20 14:19 | zhiye      
var ic = new ImgCropper("bgDiv", "dragDiv","这里的图片",

就是上传后等待处理的图片啊,现在的情况是通过Resize.js它自动改变了大小,如果要点击一个按钮后,它能够恢复它的原始大小,
使用<input id="idSize" type="button" value="缩小显示" />及
$("idSize").onclick = function(){
if(ic.Height == 200){
ic.Height = 400;
this.value = "缩小显示";
}else{
ic.Height = 200;
this.value = "还原显示";
}
ic.Init();
}得到的图像为什么只能缩放到指定高度啊,能不能点“缩小显示”后,按比例缩放15%或者其他者

  回复  引用  查看    
#132楼[楼主]2008-12-20 14:38 | cloudgamer      
@zhiye
你可以
ic._tempImg.width
ic._tempImg.height
就是图片的原始大小,你要按比例的话可以根据这个得到要设置的值
再设置ic.Height ic.Width
具体我就不写了还是自己动手吧

  回复  引用  查看    
#133楼2008-12-23 13:48 | 迎着风      
在使用缩放比例始终有些问题
我的比例使用的是 998/116 结果在预览框中右侧始终留有空白,看了源码,初步估计是在缩放拖曳框的时候拖曳框大小比例失调了,
谢谢搂主,继续研究中...

  回复  引用  查看    
#134楼[楼主]2008-12-23 19:06 | cloudgamer      
@迎着风
没明白

  回复  引用  查看    
#135楼2008-12-24 12:32 | 迎着风      
我设置Scale: true, Ratio: 998/116,后获得的预览图比例并不是 998:116,通常宽度都不够。并且拖曳框越小比例失调越大,
  回复  引用  查看    
#136楼2008-12-24 13:17 | peace      
要顶下
  回复  引用  查看    
#137楼[楼主]2008-12-24 14:27 | cloudgamer      
@迎着风
预览效果跟选择框内容有没有出入
最好你能给我看看你的程序

@peace
谢谢支持

  回复  引用  查看    
#138楼2008-12-24 23:21 | 迎着风      
好的,我已经给你发Email了,麻烦帮忙分析一下,谢谢楼主
  回复  引用  查看    
#139楼[楼主]2008-12-25 15:58 | cloudgamer      
@迎着风
谢谢你的建议
我已经修正了缩放的部分
程序已经发到你邮箱了

  回复  引用    
#140楼2008-12-31 10:19 | 郭思亮[未注册用户]
楼主,牛啊,交个朋友,可否加我QQ67955000

谢谢,崇拜中

  回复  引用  查看    
#141楼[楼主]2008-12-31 10:25 | cloudgamer      
@郭思亮
你可以加我q
不过我不知什么时候才会上
有什么问题欢迎留言或email

  回复  引用  查看    
#142楼2009-01-01 16:17 | stu_acer      
@cloudgamer
问下楼主,你发表文章的时候,怎么设置Javacript代码可以在页面上执行啊?
我再发表文章的编辑器里面没有找到相关的选项,知道的朋友也可以解答下哦

  回复  引用  查看    
#143楼[楼主]2009-01-01 16:37 | cloudgamer      
@stu_acer
我用TinyMCE编辑器
上面就有一个html的选项

  回复  引用  查看    
#144楼2009-01-01 22:33 | stu_acer      
@cloudgamer
呵呵,我原来默认的编辑器用CuteEditor,现在改成TinyMCE编辑器,已成功发表一篇能执行Javacript的文章了,谢谢。
http://www.cnblogs.com/stu-acer/archive/2009/01/01/1366610.html">百度有啊鼠标移上去图片位置动态改变效果

  回复  引用  查看    
#145楼2009-01-07 14:31 | Kevan      
太棒;了、
  回复  引用    
#146楼2009-01-10 13:32 | Conis[未注册用户]
我建议楼主能把说明写成一个pdf文件,或者一个单独的html,这样便于别人保存
  回复  引用  查看    
#147楼[楼主]2009-01-10 13:51 | cloudgamer      
@stu_acer
@Kevan
@Conis
谢谢支持
做成pdf那就都没有人来看了

  回复  引用    
#148楼2009-01-10 16:49 | beee[未注册用户]
楼主很精于JS,以及算法这些,是计算机专业的吧。
  回复  引用  查看    
#149楼[楼主]2009-01-10 16:53 | cloudgamer      
@beee
算半个吧

  回复  引用  查看    
#150楼2009-01-12 12:56 | 鬼神      
你这篇也很强大。收藏了。
  回复  引用  查看    
#151楼2009-01-13 20:17 | oec2003      
非常好
收藏

  回复  引用  查看    
#152楼2009-01-14 08:28 | Deep      
Very Good! 收藏了!
  回复  引用  查看    
#153楼2009-01-20 11:17 | 痴情客      
very well,helpful/~
  回复  引用    
#154楼2009-02-06 11:12 | 夜雪[未注册用户]
我是新手,问个问题
在javascript中 var aa=function(){}
function aa(){}
aa:function(){}
这三种创建函数有什么区别,
a=5和a:5 都是给a赋个5的意思吗? 有区别吗?

  回复  引用  查看    
#155楼[楼主]2009-02-06 11:17 | cloudgamer      
@鬼神
@oec2003
@Deep
@痴情客
谢谢支持

@夜雪
1 2都是赋值,不过也有些差别
3是属性的写法吧例如var o={a:5}那么o.a就是5

  回复  引用    
#156楼2009-02-24 10:24 | laogao[未注册用户]
能不能修改成自己选择图片了?

  回复  引用  查看    
#157楼2009-02-26 20:54 | czy1121      
呵呵,你写的这个"图片切割效果",还有狼Robot的,都被我用作我自己写的那个"图片切割效果"的参考~~
  回复  引用    
#158楼2009-03-18 13:36 | srdt[未注册用户]
那个MM确实好看
  回复  引用  查看    
#159楼2009-03-24 16:10 | VisualStudio      
找资料,顶你!
  回复  引用  查看    
#160楼2009-04-08 04:19 | zhiye      
var ic = new ImgCropper("bgDiv", "dragDiv", "/upload/2.jpg", {
Color: "#000",
Resize: false,
Right: "rRight", Left: "rLeft", Up: "rUp", Down: "rDown",
RightDown: "rRightDown", LeftDown: "rLeftDown", RightUp: "rRightUp", LeftUp: "rLeftUp",
Preview: "viewDiv", viewWidth: 110, viewHeight: 135
})

其中/upload/2.jpg为在服务器上已经上传的图片

请问这个地方的图片 能不能改成 C:\upload\2.jpg 即指向一个本地图片
在本地完成切割参数生成选择 ,点上传后在按照在本地图片的切割参数修改上传的图片

  回复  引用  查看    
#161楼[楼主]2009-04-08 08:23 | cloudgamer      
@laogao
@czy1121
@srdt
@VisualStudio
谢谢支持

  回复  引用  查看    
#162楼[楼主]2009-04-08 08:35 | cloudgamer      
@zhiye
那是不行的

  回复  引用    
#163楼2009-04-09 16:21 | 双色球[未注册用户]
不错!支持下!
  回复  引用  查看    
#164楼2009-04-09 21:04 | 5201314      
出个教程吧!~~~

看不懂!!!!!!!!!!!!

  回复  引用  查看    
#165楼[楼主]2009-04-11 08:39 | cloudgamer      
@双色球
谢谢支持

@5201314
这里的程序说明就是教程

  回复  引用  查看    
#166楼2009-04-13 02:49 | .。oоΟ○〇      
博主厉害
  回复  引用    
#167楼2009-04-25 09:01 | 爱在心里[未注册用户]
谢谢博主分享
小弟愚昧,不知道怎么保存裁剪好的图片,例如把它利用到上传图片的同时,那样就有使用性了

  回复  引用  查看    
#168楼[楼主]2009-04-25 13:53 | cloudgamer      
@.。oоΟ○〇
谢谢支持

@爱在心里
你可以看看图片切割系统
http://www.cnblogs.com/cloudgamer/archive/2008/10/05/1303993.html" target="_new">http://www.cnblogs.com/cloudgamer/archive/2008/10/05/1303993.html

  回复  引用    
#169楼2009-05-07 11:19 | hqlong[未注册用户]
很不错的一个博客
  回复  引用  查看    
#170楼2009-05-12 22:33 | 年青人      
博客不错
  回复  引用    
#171楼2009-05-23 01:55 | yiminghe
为什么和我做得如此一样。。。。我没抄你的啊,就是吵了点advanced dom scripting


基于Ext-core 好玩的图片部分自由放大工具(http://yiminghe.javaeye.com/blog/388872

  回复  引用  查看    
#172楼[楼主]2009-05-23 08:37 | cloudgamer      
@hqlong
@年青人
谢谢支持

@yiminghe
抄也不需要抄我
做得比我好的多的是

  回复  引用    
#173楼2009-06-24 13:55 | 7di.net[未注册用户]
做的非常不错,我刚才用这里的切割效果配合asp和aspjpeg组件做了一个图片切割工具,很是不错,非常棒,不过有一个小问题请教一下,就是我在生成图片获取各项数值的时候得到的图片宽度和高度好像都是预览图的宽度和高度,这好像不对,因为宽度只有100的图,切割保存之后宽度超出了100,以下是我用来获取各项数值的代码,不知道是什么地方的问题

x = o.Left,
y = o.Top,
w = o.Width,
h = o.Height,
pw = ic._layBase.width,
ph = ic._layBase.height;

http://www.7di.net

  回复  引用    
#175楼2009-06-24 15:01 | 7di.net[未注册用户]
是的,我参照的就是那个,问题就出在那个上
  回复  引用  查看    
#176楼[楼主]2009-06-24 15:11 | cloudgamer      
@7di.net
不管图片参数还是切割参数缩放参数都可以获取的
不一定要按我那个来获取的我那个只是一个例子而已
实际上要根据你要的结果来获取需要的参数
这个你自己研究一下吧

  回复  引用    
#177楼2009-06-24 23:36 | 7di.net[未注册用户]
我仔细看了一遍所有的js发现问题确实存在,问题的根源是:因为被裁切的图载入变为背景图之后是被缩放过的,所以他不再是原来的尺寸,而预览图得到的尺寸则是被裁切区域的宽度和高度,这里没有考虑原图被缩放过这一因素,因此会出问题。
  回复  引用  查看    
#178楼[楼主]2009-06-25 08:22 | cloudgamer      
@7di.net
缩放之后的大小也是可以获取的啊

  回复  引用    
#179楼2009-06-25 22:58 | 7di.net[未注册用户]
楼主可否发一个比较详细的实例啊?反正我现在在用这个系统的时候碰到了很多问题,小问题我自己都已经解决了,但是图片切割之后变形,图片切割之后尺寸不对这些问题比较难处理
  回复  引用    
#180楼2009-06-25 23:00 | 7di.net[未注册用户]
或者你设置一个参数,分别让右侧和左侧的预览图或原图不要放大或缩小,让他们保持原尺寸,这样只要修改一下这个参数就能控制让他和左侧同步大小了
  回复  引用    
#181楼2009-06-25 23:01 | www.7di.net[未注册用户]
麻烦你了,静候回复
  回复  引用  查看    
#182楼[楼主]2009-06-26 08:32 | cloudgamer      
@7di.net
理论上参数都能获取,无论你想要什么效果都应该可以
我的例子已经很详细了,如果是有什么错误我们可以研究
但如果是要其他效果请自行修改吧

  回复  引用    
#183楼2009-06-26 15:35 | 英斩树
我把程序改了一下,把URL改成从本地获得,这样的话
就是这种格式:D:\Documents and Settings\lgss\My Documents\My Pictures\sel\hello.jpg
和原来的格式:http://images.cnblogs.com/cnblogs_com/cloudgamer/143727/r_xx2.jpg
不一样,造成了无法显示,应该如何修改?

  回复  引用  查看    
#184楼[楼主]2009-06-26 15:38 | cloudgamer      
@英斩树
那样的本地路径你放到img的src都显示不了啦

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

真的不行吗?

  回复  引用    
#186楼2009-06-26 15:46 | 英斩树
没想到楼主是个这么勤奋的人,回复这么快!
  回复  引用    
#187楼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是本地路径。不过其实这段代码也是别人写的。

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

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

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

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

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

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

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

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

评论共2页: 上一页 1 2 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

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

0 1247267




相关文章:

相关链接: