【问题标题】:Image located on page in div with id instead of src - Wrap an image around a cylindrical object in HTML5 / JavaScript图像位于 div 中的页面上,带有 id 而不是 src - 在 HTML5 / JavaScript 中将图像包裹在圆柱形对象周围
【发布时间】:2018-03-28 16:59:32
【问题描述】:

感谢之前的帖子,我有一张可以环绕圆柱体的图像。

尝试将 base64 图像包裹在圆柱体周围时遇到问题。

图像位于页面上已经存在的 id 为 #nbdesigner_frontend_area img 的 div 中,而不是外部 src 图像文件。

试图将 img.src 更改为 div id 中页面上已有的 base64 图像。

有什么建议吗?我知道我很接近了。小提琴上的完整代码...

function loadUpperIMage() {
var img = new Image();


img.src = "http://res.cloudinary.com/pussyhunter/image/upload/v1488184107/500_F_97150423_M13q2FeAUZxxIx6CaPixHupprmyiVVli_skh6fe.jpg"
img.onload = function() {

  var iw = img.width;
  var ih = img.height;

  var xOffset = 102, //left padding
    yOffset = 110; //top padding

  //alert(ih)
  var a = 75.0; //image width
  var b = 10; //round ness

  var scaleFactor = iw / (4 * a);

  // draw vertical slices
  for (var X = 0; X < iw; X += 1) {
    var y = b / a * Math.sqrt(a * a - (X - a) * (X - a)); // ellipsis equation
    ctx.drawImage(img, X * scaleFactor, 0, iw / 9, ih, X + xOffset, y + yOffset, 1, 174);
  }
};
}

};

https://jsfiddle.net/n1r7dxnf/

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    在您的小提琴中,图像有一个 id 为 nbdesigner_frontend_area 的父元素 - 此解决方案基于该假设。

    您可以简单地引用元素的.src,所以不要像这样:

    img.src = "http://res.cloudinary.com/pussyhunter/image/upload/v1488184107/500_F_97150423_M13q2FeAUZxxIx6CaPixHupprmyiVVli_skh6fe.jpg"
    

    ...这样做:

    var wrapImage = document.getElementById("nbdesigner_frontend_area").getElementsByTagName("img")[0];
    img.src = wrapImage.src;
    

    【讨论】:

    • 这在小提琴中非常有效,谢谢。唯一的问题是,在实际环境中,源图像在页面加载后很好地出现在 div 中,id 很好,所以当它运行 onload 时它不起作用。 img.onload = function() { 思考我需要一个 if 语句来检查源图像是否存在,并且它会在源图像出现而不是在页面加载时运行。有什么建议吗?
    • 认为这会起作用,但不是骰子wrapImage.onload = function() { 没有抛出任何错误,但它并没有在小提琴中起作用
    • @user2059376 您能否描述一下用例,即用户采取了哪些操作?我猜你有一个显示三个杯子的界面,以及一个用户可以上传文件的区域,然后你希望它环绕现有的杯子图像。对吗?
    • 感谢您回复我。有一个 div 作为打开灯箱的按钮被单击。 div 没有唯一的 id 或类,但它确实有 data-action="preview-lightbox" data-defaulttext="Preview" 作为可能的目标。这可以用作调用脚本的按钮,因为随后会生成杯子的 base64 图像。知道如何定位 do-action=preview-lightbox 来运行脚本吗?jsfiddle.net/L5hc95kw
    • 如果你能保证它是唯一具有该属性和值的 div,那么你可以使用document.querySelector('div[data-action="preview-lightbox"]');,否则你可以使用document.querySelectorAll('div[data-action="preview-lightbox"]'); 并遍历它,直到找到合适的。
    猜你喜欢
    • 2017-04-21
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多