通过 php 将 Annotorius 注释数据从 Image Slider 保存到 mySQL

Posted

技术标签:

【中文标题】通过 php 将 Annotorius 注释数据从 Image Slider 保存到 mySQL【英文标题】:Saving Annotorius annotation data from Image Slider to mySQL via php 【发布时间】:2017-03-25 11:55:49 【问题描述】:

我需要从Annotorius Library 获取注释值的帮助。我有大量代码(太多无法发布)用于在滑块中注释图像。现在我需要获取注释数据(位置、大小和评论)以发布到我的服务器(phpmysql)。

谁能发布一些我可以学习的示例代码?

【问题讨论】:

兄弟你想要什么样的功能? 主要问题.. 我如何将 annotorius 数据保存在数据库中 你有 JS 代码来组装一个包含注释数据的表单或 JSON 对象吗? @VanquiishedWombat .. 谢谢... 我只是关注blog.yipl.com.np/… 这段代码。但此功能仅适用于 div 和文本,而不适用于图像。 你试过使用商店插件吗? 【参考方案1】:

如果我没有误会的话。您要查找的数据是: - 位置:x, y - 尺寸:宽度、高度 - 注释:注释文本

试试这个:

var datapost = new Array();
//loop all annotation
anno.getAnnotations().forEach(function(element)
 var details = '==============================================================\n';
 details += '\n image      : ' + element.src;
 details += '\n comment    : ' + element.text;

 var geometry = element.shapes[0].geometry;
 var imgObj = new Image();
 imgObj.src = element.src;

 //get position and size by pixel
 var position_x  = Math.round(imgObj.width  * geometry.x);
 var position_y  = Math.round(imgObj.height * geometry.y);
 var size_width  = Math.round(imgObj.width  * geometry.width);
 var size_height = Math.round(imgObj.height * geometry.height);

 details += '\n position_x : ' + position_x;
 details += '\n position_y : ' + position_y;
 details += '\n width      : ' + size_width;
 details += '\n height     : ' + size_height;

 console.log(details);

 //add data to post
 datapost.push(
  'image'      : element.src,
  'position_x' : position_x,
  'position_y' : position_y,
  'width'      : size_width,
  'height'     : size_height,
  'comment'    : element.text
 );
);

//post data to the server here
console.log(datapost);

【讨论】:

这对我来说还不够。 好吧,你也没有提供任何细节 我认为 Atmahadli 的代码是正确的。但它与 rake 不同的是用于注释【参考方案2】:

经过大量的研发,我无法得到答案。现在我已经使用了 jquery 的 jssor 滑块和 https://annotorious.github.io/index.html 库。完整的代码如下所示。

    <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>

    <link type="text/css" rel="stylesheet" href="http://annotorious.github.com/latest/annotorious.css" />
    <script type="text/javascript" src="js/annotorious.min.js"></script>
    <script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
    <script src="js/jssor.slider-21.1.6.mini.js" type="text/javascript"></script>

</head>
<body style="padding:0px; margin:0px; background-color:#fff;font-family:helvetica, arial, verdana, sans-serif">
<style>
        /* jssor slider arrow navigator skin 05 css */
        /*
        .jssora05l                  (normal)
        .jssora05r                  (normal)
        .jssora05l:hover            (normal mouseover)
        .jssora05r:hover            (normal mouseover)
        .jssora05l.jssora05ldn      (mousedown)
        .jssora05r.jssora05rdn      (mousedown)
        .jssora05l.jssora05lds      (disabled)
        .jssora05r.jssora05rds      (disabled)
        */
        .jssora05l, .jssora05r 
            display: block;
            position: absolute;
            /* size of arrow element */
            width: 40px;
            height: 40px;
            cursor: pointer;
            background: url('img/a17.png') no-repeat;
            overflow: hidden;
        
        .jssora05l  background-position: -10px -40px; 
        .jssora05r  background-position: -70px -40px; 
        .jssora05l:hover  background-position: -130px -40px; 
        .jssora05r:hover  background-position: -190px -40px; 
        .jssora05l.jssora05ldn  background-position: -250px -40px; 
        .jssora05r.jssora05rdn  background-position: -310px -40px; 
        .jssora05l.jssora05lds  background-position: -10px -40px; opacity: .3; pointer-events: none; 
        .jssora05r.jssora05rds  background-position: -70px -40px; opacity: .3; pointer-events: none; 
        /* jssor slider thumbnail navigator skin 01 css *//*.jssort01-99-66 .p            (normal).jssort01-99-66 .p:hover      (normal mouseover).jssort01-99-66 .p.pav        (active).jssort01-99-66 .p.pdn        (mousedown)*/.jssort01-99-66 .p     position: absolute;    top: 0;    left: 0;    width: 99px;    height: 66px;.jssort01-99-66 .t     position: absolute;    top: 0;    left: 0;    width: 100%;    height: 100%;    border: none;.jssort01-99-66 .w     position: absolute;    top: 0px;    left: 0px;    width: 100%;    height: 100%;.jssort01-99-66 .c     position: absolute;    top: 0px;    left: 0px;    width: 95px;    height: 62px;    border: #000 2px solid;    box-sizing: content-box;    background: url('img/t01.png') -800px -800px no-repeat;    _background: none;.jssort01-99-66 .pav .c     top: 2px;    _top: 0px;    left: 2px;    _left: 0px;    width: 95px;    height: 62px;    border: #000 0px solid;    _border: #fff 2px solid;    background-position: 50% 50%;.jssort01-99-66 .p:hover .c     top: 0px;    left: 0px;    width: 97px;    height: 64px;    border: #fff 1px solid;    background-position: 50% 50%;.jssort01-99-66 .p.pdn .c     background-position: 50% 50%;    width: 95px;    height: 62px;    border: #000 2px solid;* html .jssort01-99-66 .c, * html .jssort01-99-66 .pdn .c, * html .jssort01-99-66 .pav .c     /* ie quirks mode adjust */    width /**/: 99px;    height /**/: 66px;
    </style>
    <div id="jssor_1" style="position: relative; margin: 0 auto; top: 0px; left: 0px; width: 960px; height: 480px; overflow: hidden; visibility: hidden; background-color: #24262e;">
        <!-- Loading Screen -->
        <div data-u="loading" style="position: absolute; top: 0px; left: 0px;">
            <div style="filter: alpha(opacity=70); opacity: 0.7; position: absolute; display: block; top: 0px; left: 0px; width: 100%; height: 100%;"></div>
            <div style="position:absolute;display:block;background:url('img/loading.gif') no-repeat center center;top:0px;left:0px;width:100%;height:100%;"></div>
        </div>
        <div data-u="slides" style="cursor: default; position: relative; top: 0px; left: 240px; width: 720px; height: 480px; overflow: hidden;">
            <div data-p="150.00">
                <img data-u="image" src="img/01.jpg" />
                <img data-u="thumb" src="img/thumb-01.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/02.jpg" />
                <img data-u="thumb" src="img/thumb-02.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/03.jpg" />
                <img data-u="thumb" src="img/thumb-03.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/04.jpg" />
                <img data-u="thumb" src="img/thumb-04.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/05.jpg" />
                <img data-u="thumb" src="img/thumb-05.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/06.jpg" />
                <img data-u="thumb" src="img/thumb-06.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/07.jpg" />
                <img data-u="thumb" src="img/thumb-07.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/08.jpg" />
                <img data-u="thumb" src="img/thumb-08.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/09.jpg" />
                <img data-u="thumb" src="img/thumb-09.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/10.jpg" />
                <img data-u="thumb" src="img/thumb-10.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/11.jpg" />
                <img data-u="thumb" src="img/thumb-11.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/12.jpg" />
                <img data-u="thumb" src="img/thumb-12.jpg" />
            </div>
            <a data-u="any" href="http://www.jssor.com" style="display:none">Image Gallery with Vertical Thumbnail</a>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/13.jpg" />
                <img data-u="thumb" src="img/thumb-13.jpg" />
            </div>
            <div data-p="150.00" style="display: none;">
                <img data-u="image" src="img/14.jpg" />
                <img data-u="thumb" src="img/thumb-14.jpg" />
            </div>
        </div>
        <!-- Thumbnail Navigator -->
        <div data-u="thumbnavigator" class="jssort01-99-66" style="position:absolute;left:0px;top:0px;width:240px;height:480px;" data-autocenter="2">
            <!-- Thumbnail Item Skin Begin -->
            <div data-u="slides" style="cursor: default;" class="mainrelated">
                <div data-u="prototype" class="p">
                    <div class="w">
                        <div data-u="thumbnailtemplate" class="t"></div>
                    </div>
                    <div class="c"></div>
                </div>
            </div>
            <!-- Thumbnail Item Skin End -->
        </div>
        <!-- Arrow Navigator -->
        <span data-u="arrowleft" class="jssora05l" style="top:0px;left:248px;width:40px;height:40px;" data-autocenter="2"></span>
        <span data-u="arrowright" class="jssora05r" style="top:0px;right:8px;width:40px;height:40px;" data-autocenter="2"></span>
    </div>
    <!-- #endregion Jssor Slider End -->





    <script type="text/javascript">
        jQuery(document).ready(function ($) 

            var jssor_1_SlideshowTransitions = [
              $Duration:1200,$Zoom:1,$Easing:$Zoom:$Jease$.$InCubic,$Opacity:$Jease$.$OutQuad,$Opacity:2,
              $Duration:1000,$Zoom:11,$SlideOut:true,$Easing:$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Opacity:2,
              $Duration:1200,$Zoom:1,$Rotate:1,$During:$Zoom:[0.2,0.8],$Rotate:[0.2,0.8],$Easing:$Zoom:$Jease$.$Swing,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$Swing,$Opacity:2,$Round:$Rotate:0.5,
              $Duration:1000,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$InExpo,$Opacity:2,$Round:$Rotate:0.8,
              $Duration:1200,x:0.5,$Cols:2,$Zoom:1,$Assembly:2049,$ChessMode:$Column:15,$Easing:$Left:$Jease$.$InCubic,$Zoom:$Jease$.$InCubic,$Opacity:$Jease$.$Linear,$Opacity:2,
              $Duration:1200,x:4,$Cols:2,$Zoom:11,$SlideOut:true,$Assembly:2049,$ChessMode:$Column:15,$Easing:$Left:$Jease$.$InExpo,$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Opacity:2,
              $Duration:1200,x:0.6,$Zoom:1,$Rotate:1,$During:$Left:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8],$Easing:$Left:$Jease$.$Swing,$Zoom:$Jease$.$Swing,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$Swing,$Opacity:2,$Round:$Rotate:0.5,
              $Duration:1000,x:-4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:$Left:$Jease$.$InExpo,$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$InExpo,$Opacity:2,$Round:$Rotate:0.8,
              $Duration:1200,x:-0.6,$Zoom:1,$Rotate:1,$During:$Left:[0.2,0.8],$Zoom:[0.2,0.8],$Rotate:[0.2,0.8],$Easing:$Left:$Jease$.$Swing,$Zoom:$Jease$.$Swing,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$Swing,$Opacity:2,$Round:$Rotate:0.5,
              $Duration:1000,x:4,$Zoom:11,$Rotate:1,$SlideOut:true,$Easing:$Left:$Jease$.$InExpo,$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$InExpo,$Opacity:2,$Round:$Rotate:0.8,
              $Duration:1200,x:0.5,y:0.3,$Cols:2,$Zoom:1,$Rotate:1,$Assembly:2049,$ChessMode:$Column:15,$Easing:$Left:$Jease$.$InCubic,$Top:$Jease$.$InCubic,$Zoom:$Jease$.$InCubic,$Opacity:$Jease$.$OutQuad,$Rotate:$Jease$.$InCubic,$Opacity:2,$Round:$Rotate:0.7,
              $Duration:1000,x:0.5,y:0.3,$Cols:2,$Zoom:1,$Rotate:1,$SlideOut:true,$Assembly:2049,$ChessMode:$Column:15,$Easing:$Left:$Jease$.$InExpo,$Top:$Jease$.$InExpo,$Zoom:$Jease$.$InExpo,$Opacity:$Jease$.$Linear,$Rotate:$Jease$.$InExpo,$Opacity:2,$Round:$Rotate:0.7,
              $Duration:1200,x:-4,y:2,$Rows:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:$Row:28,$Easing:$Left:$Jease$.$InCubic,$Top:$Jease$.$InCubic,$Zoom:$Jease$.$InCubic,$Opacity:$Jease$.$OutQuad,$Rotate:$Jease$.$InCubic,$Opacity:2,$Round:$Rotate:0.7,
              $Duration:1200,x:1,y:2,$Cols:2,$Zoom:11,$Rotate:1,$Assembly:2049,$ChessMode:$Column:19,$Easing:$Left:$Jease$.$InCubic,$Top:$Jease$.$InCubic,$Zoom:$Jease$.$InCubic,$Opacity:$Jease$.$OutQuad,$Rotate:$Jease$.$InCubic,$Opacity:2,$Round:$Rotate:0.8
            ];

            var jssor_1_options = 
              $AutoPlay: false,
              $SlideshowOptions: 
                $Class: $JssorSlideshowRunner$,
                $Transitions: jssor_1_SlideshowTransitions,
                $TransitionsOrder: 1
              ,
              $ArrowNavigatorOptions: 
                $Class: $JssorArrowNavigator$
              ,
              $ThumbnailNavigatorOptions: 
                $Class: $JssorThumbnailNavigator$,
                $Rows: 2,
                $Cols: 6,
                $SpacingX: 14,
                $SpacingY: 12,
                $Orientation: 2,
                $Align: 156
              
            ;

            var jssor_1_slider = new $JssorSlider$("jssor_1", jssor_1_options);

            /*responsive code begin*/
            /*you can remove responsive code if you don't want the slider scales while window resizing*/
            function ScaleSlider() 
                var refSize = jssor_1_slider.$Elmt.parentNode.clientWidth;
                if (refSize) 
                    refSize = Math.min(refSize, 960);
                    refSize = Math.max(refSize, 300);
                    jssor_1_slider.$ScaleWidth(refSize);
                
                else 
                    window.setTimeout(ScaleSlider, 30);
                
            
            ScaleSlider();
            $(window).bind("load", ScaleSlider);
            $(window).bind("resize", ScaleSlider);
            $(window).bind("orientationchange", ScaleSlider);




          // $xx= 0;
          //   setInterval(function()
          //         if($xx==0)
                    $("#jssor_1").find('img').each(function(index)
                        $(this).attr('id','myyyyid'+index);
                        $mainid = $(this).attr('id');                        
                        anno.makeAnnotatable(document.getElementById($mainid));
                    );
          //         
          //    , 2000);


        /*responsive code end*/
        );
    </script>

</body>
</html>

滑块和注解的完整html+jquery脚本。您只需复制并粘贴代码并在浏览器上运行。可能对你有用。

【讨论】:

@Atmahadli 这对所有开发人员都很重要。也感谢您的回答。

以上是关于通过 php 将 Annotorius 注释数据从 Image Slider 保存到 mySQL的主要内容,如果未能解决你的问题,请参考以下文章

PHP类和函数注释大全

通过 PHP 脚本将数据从 Arduino 发送到数据库的问题

如何通过 ajax 从 Summernote 编辑器将数据发送到 php 文件?

我如何通过 json 将数据从我的设备发送到我的 php 文件

通过XmlHttpRequest将数据从JS传递给PHP

如何将sql数据放入php表中