如何在SVG文档中获得嵌入图像的真实(未缩放)大小?
how to get the real (unscaled) size of an embedded image in the svg document?!
我有一个SVG文档,其中包含图像条目:
<image id="image12975" x="30" y="40" width="30" height="45"
xlink:href="img/Akira1.jpg">
</image>
我已经获得了SVG图像在Javascript中做:
var imgE = document.getElementsByTagName('rect');
document.getElementById('test').innerHTML = imgE;
给我带来了Javascript中的[object SVGImageElement]。
通过迭代对象,我得到了函数和属性的完整子集。height和width的函数"getBBox()"只给我定义为width(30)和height(45)的属性值。
我正在寻找真实的参数,就像我单独打开图片一样,这在现实中是宽度="300"和高度="430"像素。
对于任何支持我都将非常感谢
降服者我想出了如何完全在Javascript端解决它,而不做任何XHR调用或其他!
但是,SVG没有任何dom函数来计算图片的未缩放大小。
Sollution !
从属性中获取SVGImageElement对象及其URL:
var myPicXE = document.getElementsByTagName('image')[0];
var address = myPicXE.getAttribute('xlink:href');
创建一个图像对象并分配它的src地址:
var myPicXO = new Image();
myPicXO.src = address;
并询问它的高度和宽度:
myPicXO.width;
myPicXO.height;
应该也适用于base65jpeg内联图像(http://en.wikipedia.org/wiki/Data_URI_scheme)
就是这样!
我做了一些研究,无法找到一个可以枚举的属性来获得图像的实际宽度和高度。然而,还有另一种方法似乎很有趣,它包括一个xmlHttpRequest来获取图像并枚举它的尺寸。
这让我想到了一个稍微快一点的方法。解决方案是利用隐藏的<div>
作为工作容器,并拉下必要的图像(使用<img>
),您可以在那里枚举宽度和高度。这个伪代码例如:
- 遍历图像集合
- 用合适的src路径创建一个图像节点
- 将新节点添加到div#ImageEnumeration
- 枚举检索到的图像
只是为了笑(如果它有帮助)这里是一些xmlHttpRequest的代码草案:
var imgRequest =
function(sImgUrl, oRequestCallback){
var xhr = new XMLHttpRequest();
xhr.open('GET', sImgUrl, true);
xhr.onreadystatechange = oRequestCallback;
xhr.send(null);
};
var xhrImageRequest =
function(result){
var oImageDimensions;
//Create and append <img> to <div #ImageEnumeration>
//Get image width and height
//return image width and height
};
var myImage = imgRequest("http://example.com/myImage.png", xhrImageRequest);
如果这不能解决你的问题,我希望它至少能产生一些新的想法来解决它。
相关文章:
- 更改高贴图的缩放级别
- 在不阻止默认行为的情况下检测IE10中的缩放
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 缩放Raphael/SVG容器以适应所有内容
- 传单缩放控制位置错误
- 在不移动内部文本的情况下缩放元素的效果
- 调整缩放窗口高度提升缩放
- 计算CSS3缩放框在另一个框中的最高位置
- D3.JS向rect添加缩放和列表项
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 将直流图表库中的折线图缩放限制为小时
- 为什么缩放按钮不会显示在照片擦除中
- 动态设置谷歌地图缩放
- 如何缩放像图像一样的元素
- 使用KineticJS变换(移动/缩放/旋转)形状
- 在手机上缩小/缩放滚动图像
- 将时间缩放添加到折线图(Chart.js)
- 当涉及css缩放时,如何获得页面上的点击位置
- 如何缩放地图框传单中的标记单击事件
- 如何在SVG文档中获得嵌入图像的真实(未缩放)大小?