Image Rendition是SP2013的一个很好的功能,简单说来这用简单继承实现了重复使用图片。
如果你需要在SharePoint站点上使用同一图片不同的高宽等大小,传统的实现方法是:
-
有同一图片的多种尺寸备份。
在Imagetag中定制高度宽度属性来实现缩小或拉伸图片。
SP2013通过使用图像呈现形式来提供了一个新的方法来站点中使用同一图片的不同尺寸,我们可以创建一些图像呈现形式这也可以应用到站点中的多个图片。因此结果就是一个图片基于站点上的图像呈现形式定义以呈现多种大小。使用此功能主要的事情不仅是图片的尺寸可以改变而且图片本身也会显示为定义的大小,因此图片的质量显示没有影响。
SP站点中使用此功能的唯一条件是使用网页程序的blob缓存。只有激活网页程序的blob缓存才能在功能栏中看到“Pick Rendtion”图标。
Web.config中激活Blob缓存
默认情况下Blob缓存是未激活的,激活这个需要打开网页程序的web.config文件,找到“BlobCache”标签并设置enable=”true”.config文件类似如下<BlobCache location="C:\BlobCache\14" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|themedbmp|themedcss|themedgif|themedjpg|themedpng|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv|ogg|ogv|oga|webm|xap)$" maxSize="10" enabled="true" />
通过代码添加图像呈现形式
SharePoint2013的Microsoft.SharePoint.Publishing.dll文件提供一个接口可供实现与图像呈现形式功能编程交互。如下代码段说明了添加一个新的图像呈现形式到一个站点。
using (SPSite site = new SPSite("http://sp2013.in/sites/s1")) { ImageRenditionCollection imageRenditions = SiteImageRenditions.GetRenditions(site); ImageRendition rendition = new ImageRendition { Name = "Logo Rendition", Width = 80, Height = 80 }; imageRenditions.Add(rendition); imageRenditions.Update(); }
一旦图像呈现形式被创建,在图片选中编辑时,它将会显示在功能条上面的“Pickrendition”选项下,选择自己想要的呈现形式会添加一个询问语句到图片内部HTML上并且图片会按照选择的呈现形式来显示。
<img src="/sites/pub/Assets/Lighthouse.jpg?RenditionID=2" />
下面详细介绍如何为站点定义图片呈现形式,可以通过点击操作->站点设置->外观->图像呈现形式,如下图:
默认情况下,已经有一些定义的呈现形式,但你也可以定义自己的呈现形式。
定义呈现形式之后,最后一步是定义每个图片如何呈现形式。虽然sp2013自动根据呈现形式尺寸实现图片大小显示,但你仍然可以剪切图片确保重要的细节没有丢失。
你可以通过在图片库里进行编辑呈现形式,选择你的图片,打开它的菜单并选择编辑呈现形式选项
在编辑呈现形式页面你可以看到页面在不同的呈现形式方式下如何显示并且你可以编辑当前的呈现形式方式。
如前面提到的一样,当编辑呈现形式的时候你不仅可以重设图片大小还可以剪切以确保保留下重要的部分。
此配置图片呈现形式方式过程完成后你就可以在站点上开始使用这些优化好的图片。插入一张图片后,你可以使用选择呈现形式选项来选择你想用的图片呈现形式。
提供你一个使用图像呈现形式的好处的方法,添加一张图片到一个页面:一旦在浏览器中简单定义了并且一旦使用了图像呈现形式。然后比较下所有图片的大小。
你可以看到,虽然我们使用相同的图片,但是它们的内容还是有些不同。这跟不仅跟重新定义图片大小有关,也跟应用的剪切方式有关。并且,如果你足够仔细,你应该也注意到了两张图片之间有许多质量区别。最重要的区别是他们的大小不同。
虽然图片源文件,不管是小尺寸下大小是672kb,使用图像呈现形式的图片仅仅3kb,增大了22400%倍但是看起来同样不错!
架构思考
现在我们知道什么是SP2013的图像呈现形式和怎样使用的。我们来看看架构的一些思考,来帮助你在解决方案中设计图像呈现形式。
图像呈现形式依赖于Blob缓存
前面提到为最大限度地避免动态生成图片,图像呈现形式需要正确激活Blob缓存。这样,在你的解决方案中设计使用图像呈现形式前,确保场有正确的配置以支持Blob缓存
HTTP ETag
有定义的ETags来进一步优化性能并保存图像呈现形式产生的图片的带宽。
不仅仅用于仅仅图片
尽管名义上图像呈现形式的名字能用于视频,视频呈现形式也恰同图片呈现形式一样并产生呈现形式缓存存储在Blob缓存。
存储
所有的图像呈现形式存储在~SiteCollection/_catalogs/masterpage/PublishingImageRenditions.xml文件上,这个文件包含创建的呈现形式信息,它们的ID,名字和尺寸,以及新的图像呈现形式创建时下一个将要用到的ID。
支持的媒体种类
图像呈现形式支持多种媒体类型,如下是图像呈现形式支持的所有图片和视频类型概括。
支持的图片类型
SP2013图像呈现形式支持如下图片文件类型:gif, jpg, jpeg, jpe, jfif, bmp, dib, png, tif, tiff, ico,wdp, hdp
支持的视频类型
SP2013视频呈现形式支持如下视频文件类型:wmv, wma, avi, mpg, mp3, mp4, asf, ogg, ogv, oga, webm
版本
图片呈现形式是版本化的。每次更改呈现形式的尺寸相应呈现形式的版本号就会增1,在改变图片呈现形式尺寸后,你将必须重新基于尺寸去编辑剪切图片。
图片的呈现形式
编辑图片的呈现形式图存储在图片文件的属性袋里,在PublishingImageRenditionID 属性,ID指特定的呈现形式ID,例如,PublishingImageRendition1,每个呈现形式信息包含以分号分割的7个整数,例如,1;1920;1200;1183;0;737;737.
如下列出了这些整数所代表的意义:
-
[0]:rendition version
-
[1]: SourceImage Width
-
[2]: SourceImage Height
-
[3]: CropStart X
-
[4]: CropStart Y
-
[5]: CropWidth
-
[6]: CropHeight
支持的图片呈现形式大小
图像呈现形式尺寸不能超过2048px.即,图片的高度和宽度都不能超过这个数字。
公用接口
SP2013提供了公用程序接口允许你与图像呈现形式进行编码交互。如下提到的所有的程序接口在集合类Microsoft.SharePoint.Publishing中提供。
图像呈现形式编码工作始于检索特定站点所定义的图像呈现形式列表:
1
Microsoft.SharePoint.Publishing.ImageRenditionCollection imageRenditions =Microsoft.SharePoint.Publishing.SiteImageRenditions.GetRenditions(SPContext.Current.Site);
新的图像呈现形式能通过代码添加,使用到的方法是ImageRenditionCollection.Add
using(SPSitesite= newSPSite("http://mavention")){
ImageRenditionCollectionimageRenditions = SiteImageRenditions.GetRenditions(site);
ImageRenditionrendition = newImageRendition {
Name= "Mavention Rendition",
Width= 295,
Height= 295
};
imageRenditions.Add(rendition);
imageRenditions.Update();
}
你可以简单地通过使用ImageRenditionCollection.Remove 方法传递特定的呈现形式参数来移除已有的呈现形式。已存在的图像呈现形式你可以更改名字、宽度和高度。在改变一个或多个属性后你必须调用ImageRenditionCollection.Update方法来实现更改。
图像呈现形式参考
默认下,当你插入一张图并选择一个图像呈现形式,SP2013将会附加RenditionID询问语句参数到图片的URL地址。这样会导致图像呈现形式载入而不是图片源文件。当这个功能在仅一个站点中使用良好,如果你设计多站点发布场景使用可能会出现挑战性。因为图片呈现形式ID自动产生,可能同样的呈现形式不同的ID会用在在不同的站点间。
好的是,虽然页面上看起来不明显,你可以通过参考图像呈现形式的宽度和高度!在图片URL上移除呈现形式ID的询问语句参数并加上图像呈现形式定义的宽度和高度询问语句参数作为替换,如。
1
http://mavention/SiteCollectionImages/ThorsWell1920x12006-22-20112_52_47 PM.JPG?RenditionID=1
变成
http://mavention/SiteCollectionImages/ThorsWell1920x12006-22-2011 2_52_47 PM.JPG?Width=100检查sp2013呈现形式,首先查看呈现形式ID参数,然后宽度,高度。如果没有定义呈现形式ID。没有提供宽度和(或)高度,sharepoint会尝试用宽度和高度来取需要的呈现形式。如果你仅提供宽度或者仅提供高度,并且同样宽度、高度下有多个呈现形式,则会返回第一个匹配的呈现形式
总结
Sp2013提供图像呈现形式能力来优化网页使用的图片,结合设备频道图像呈现形式是有力的机制用户移动设备的用户体验。本文我展示给大家什么事图像呈现形式,怎样工作,以及设计使用图像呈现形式时架构的思考。
文章来源:
-
http://www.fixthisbug.com/post/Image-Renditions-in-SharePoint-2013