中.

6. 托拽的结果是在index.jsp中加入了一些代码, 一行是导入了jMaki的 taglib, 一个是创建了FishEye widget实例.
......
<ajax name="dojo.fisheye"></ajax> args="{items:[ {iconSrc:'https://ajax.dev.java.net/images/blog_murray.jpg',caption:'You are here!'}, {iconSrc:'https://ajax.dev.java.net/images/chinnici.jpg',caption:'test3'}, {iconSrc:'https://ajax.dev.java.net/images/JayashriVisvanathan.jpg',caption:'test4'} ]}"/> |
7. 这个例子中缺省配置的几幅图像是参与开发jMaki的工程师头像,下面我要把这几幅图像替换为duke. 在jMakiFishEye项目的web目录下创建images 目录,拷贝几幅duke图像,修改index.jsp中 FishEye的代码如下:
<ajax name="dojo.fisheye"></ajax> args="{items:[ {iconSrc:'images/Bike.jpg',caption:'Bike',index:1}, {iconSrc:'images/Snooze.jpg',caption:'Snooze',index:2}, {iconSrc:'images/Surfing.jpg',caption:'Surfing',index:3}, {iconSrc:'images/Thinking.jpg',caption:'Thinking',index:4}, {iconSrc:'images/Toolbelt.jpg',caption:'Toolbelt',index:5} ]}"/> |

8. 运行结果如下:

9. 这个FishEye的效果是水平方向的,如果想改成垂直方向, 打开jMakiFishEye下的index.jsp, 鼠标右键点击FishEyeWidget代码段, 可以看到”jMaki”菜单, 是用来对jMaki中Widget做外观配置的窗口. 出现的”dojo.fisheye Customizer”窗口中,修改”orientation”中的值为”Vertical”.

10. 再运行jMakiFishEye的结果如下:

JMaki中FishEye的实现也包括两部分.客户端和服务器端.
客户端内容在 jMakiFishEye 项目的Web/Resource/dojo/fisheye, 包括四个文件
-
images/dojo-fisheye.jpg: 缺省图像背景
-
component.htm: 模板
-
component.js:这个JavaScritp 文件定义了Fisheye的操作
-
widget.json: 这个文件提供了访问Fisheye的接口
服务器端是两个jar文件, 主要是实现了前面介绍的jMaki Server Runtime和XmlHttpProxy
-
ajax-wrapper-comp.jar:
-
rss.jar:
下图列出了fisheye Widget有关的文件

(二)jMaki中的”发布/订阅机制”(publish/subscribe machnism)介绍
其它应用程序如果要使用jMaki中的 Widget, 需要遵循jMaki的”发布/订阅机制”(publich/subscribe machnism). 下面给出一个应用FishEye的实例, 来说明如何实现”发布/订阅机制”(publich/subscribe machnism)。这个FishEye实例会在点击FishEye图标时, 在页面的某个位置显示当前点击的图像,已经图像的详细信息。
第一步, Widget 需要发布(publish)一个主题(Topic)
按照需求, 应用程序需要知道FishEye中哪一个图标被选中, 因此需要修改component.js中和Click有关的代码.黑体部分代码是在图标的onClick函数中发布(publish)了这个topic, (“/dojo/fisheye”).参数this指当前的图标,包含所有的图标的相关信息,比如src, caption, index等等.
// programtically add FisheyeListItem children to the widget var counter = 0; while (true) { var i = items[counter++]; if (i == null) break; var icon = dojo.widget.createWidget("FisheyeListItem", i);
icon.onClick = function () { //jmaki.publish(topic, {target:this, wargs:wargs}); jmaki.publish(topic, this); } fishEye.addChild(icon); } |
第二步, 应用程序订阅(subscribe)这个主题
Fisheye缺省的点击动作会弹出一个 JavaScript窗口,内容为"glue.js : fisheye event",现在我们不需要这个弹出窗口,可以在 glue.js中找到handleFisheye代码, 注释掉”alert”部分
handleFisheye : function(args) { //alert("glue.js : fisheye event"); }, |
应用程序订阅(subscribe)主题需要做两件事:
修改index.jsp, 加入两段代码.一段是在左侧栏中加入"",用来显示点击FishEye中图标的结果(黑体字是新加入部分)
<!-- leftSidebar -->
...... |
一段是JavaScript 代码,调用subscribe方法和完成listener方法. 这段Script代码要放在Fisheye Widget代码之后.
Main Content Area <ajax name="dojo.fisheye"></ajax> args="{items:[ {iconSrc:'images/Bike.jpg',caption:'Bike',index:1}, {iconSrc:'images/Snooze.jpg',caption:'Snooze',index:2}, {iconSrc:'images/Surfing.jpg',caption:'Surfing',index:3}, {iconSrc:'images/Thinking.jpg',caption:'Thinking',index:4}, {iconSrc:'images/Toolbelt.jpg',caption:'Toolbelt',index:5} ]}"/>
function fisheyeListener(item) { var targetDiv = document.getElementById("image_detail"); var responseText = " " + "Caption: "+ item.caption + " " + "Image index: " + item.index + ""; targetDiv.innerHTML = responseText; } jmaki.subscribe("/dojo/fisheye", fisheyeListener); <!-- content --> |
运行结果如下, 点击FishEye中的某个图标后,在左侧栏中显示对应图像以及图像的详细信息:

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1783756
相关推荐
在“JQuery Fisheye实例”中,我们看到的是一个苹果风格的鱼眼菜单。苹果公司的设计以其简洁、优雅而著称,鱼眼菜单的运用则增加了界面的动态感。这种特效的实现依赖于CSS(层叠样式表)和JavaScript的结合,通过...
鱼眼校正是图像处理领域中的一个重要技术,主要目的是消除由鱼眼镜头产生的强烈曲率失真,使图像恢复到正常视角或接近真实世界的视角。鱼眼镜头由于其广阔视野,常用于全景摄影和特殊视觉效果,但其图像失真却对后续...
在IT行业中,鱼眼图(Fisheye Image)是一种特殊的图像变形技术,它通过模拟鱼眼镜头的透视效果,使图像呈现出极宽广的视角,通常用于全景摄影或者监控系统中。本项目以C++编程语言实现了对鱼眼图的处理,下面将详细...
在本文中,我们将深入探讨如何使用Windows Presentation Foundation (WPF) 创建一个动态且吸引人的FishEye,也就是鱼眼效果的控件。WPF是.NET Framework的一部分,它为开发人员提供了丰富的用户界面(UI)设计工具,...
参照opencv及网上资料基于opencv3.0编写,标定结果与matlab2015一致,欢迎交流!
《鱼眼照片矫正工具——Imadio Fisheye Hemi Photoshop Plug-In 2.0.6详解》 在摄影领域,鱼眼镜头由于其独特的视觉效果,被广泛应用于创意拍摄和特殊视角的需求。然而,鱼眼镜头拍摄的照片往往存在严重的变形,这...
鱼眼矫正,也被称为fisheye矫正,是图像处理领域中的一个重要技术,主要用于纠正鱼眼镜头或广角镜头在拍摄时产生的严重失真现象。鱼眼镜头由于其特殊的光学设计,可以提供超广视角,但同时也会使图像边缘产生明显的...
标题中的"fisheye_opencv-master"暗示了我们正在讨论OpenCV库中的鱼眼镜头校正功能。OpenCV是一个强大的开源计算机视觉库,它提供了多种图像和视频处理功能,包括对非标准镜头(如鱼眼镜头)拍摄的图像进行校正的...
可实现鱼眼校正功能,主要包括有效区域的提取与鱼眼校正
综上所述,基于OpenGL和GLSL的鱼眼全景图实现涉及到图像处理、3D图形编程和着色器技术等多个方面,通过精心设计的顶点和片段着色器,以及合理的纹理映射,我们可以成功地将二维的全景图转化为具有鱼眼视觉效果的三维...
对于鱼眼镜头,需要选择合适的鱼眼模型,如Brown-Conrady模型或Fisheye模型。 4. **畸变矫正**:一旦得到内参和畸变系数,可以使用`undistortImage`函数对原始图像进行畸变校正,消除鱼眼效应。 5. **标定结果评估...
以本文提供的yuyan.caj文件为例,这可能是一个包含详细分析和实例的文档,读者可以通过阅读该文档进一步了解鱼眼校正的理论知识和技术细节。无论是摄影爱好者还是专业的图像处理人员,掌握鱼眼校正技术都能极大地...
总的来说,这个MATLAB程序为鱼眼校正提供了一个基础框架,帮助用户理解图像校正的基本流程。通过学习和实践,可以深入掌握如何处理和校正鱼眼镜头产生的畸变,这对于无人机、全景摄影、遥感等领域都有重要的应用价值...
在3D建模和渲染中,模拟真实的摄影效果是至关重要的,这其中包括了鱼眼镜头的效果。鱼眼镜头因其独特的视角和夸张的变形,常用于创建广阔、震撼的视觉效果。本篇文章将深入探讨Maya中的鱼眼镜头插件及其应用。 首先...
4. **畸变校正**:使用`cv2.undistortPoints()`或`cv2.fisheye.undistortPoints()`(适用于鱼眼镜头)函数,结合之前计算的内参和畸变系数,对原始图像进行校正,消除畸变。 5. **保存和应用结果**:校正后的参数...
OCamCalib采用的模型可能是Brown-Conrady模型或Fisheye模型,这些模型能够很好地模拟鱼眼镜头的畸变。 5. **矫正函数构建**:根据标定得到的参数,构建矫正函数。这个函数可以将原始畸变图像映射到无畸变图像空间。...
接下来,进行鱼眼矫正的关键步骤是使用`cv::fisheye::stereoRectify()`和`cv::fisheye::initUndistortRectifyMap()`函数创建映射矩阵。映射矩阵可以将鱼眼图像的每个像素坐标转换为无畸变的平面坐标。最后,使用`cv:...
二、OpenCV 3.0的鱼眼标定与校正 OpenCV是计算机视觉领域的强大工具,其中包含了对鱼眼镜头畸变校正的函数支持。利用OpenCV的`calibrateCamera`函数可以进行鱼眼相机的标定,标定过程需要一组已知坐标点的网格图片...
利用棋盘格进行标定, 然后计算鱼眼镜头的畸变系数以及内参, opencv中自带有fisheye模块, 可以直接根据棋盘格标定结果,采用cv2.fisheye.calibrate计算畸变系数以及内参, 然后使用cv2.fisheye....
OpenCV的`cv2.fisheye.undistort()`函数可以去除鱼眼图像的畸变,得到一个相对平坦的图像。但是,这仅仅是第一步,我们还需要将这个校正后的图像转换为针孔相机模型。 转换过程需要用到目标针孔相机的视角,即仰角...