<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Hololens and Image capture in Vuforia Studio</title>
    <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Hololens-and-Image-capture/m-p/799299#M10914</link>
    <description>&lt;P&gt;Sometimes looking at code can help provide different insights&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// $scope, $element, $attrs, $injector, $sce, $timeout, $http, $ionicPopup, and $ionicPopover services are available&lt;/P&gt;
&lt;P&gt;console.log($scope.app);&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// Globals indicated by uppercase naming&lt;BR /&gt;// // **************************************************************************************************************&lt;/P&gt;
&lt;P&gt;var WIDTH_USED ;&lt;BR /&gt;var UPLOAD_IMAGE_AS_IS;&lt;BR /&gt;var NUMBER_OF_HISTORY_IMAGES = 4;&lt;BR /&gt;var IMAGE_BORDER = 15;&lt;BR /&gt;var IMAGE_BORDER_COLOR = '#FFF832';&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;//&lt;BR /&gt;// Local functions &lt;BR /&gt;// These functions can not be used directly with studio&lt;BR /&gt;// The are help function to make the main $scope visible function be more readable&lt;BR /&gt;//&lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// draw image to a canvas to reduce size &lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;drawImageToCanvas = function (imageToDraw , imageWidth) {&lt;/P&gt;
&lt;P&gt;var canvas = document.createElement("canvas");&lt;BR /&gt;var ctx = canvas.getContext("2d");&lt;/P&gt;
&lt;P&gt;var image = new Image();&lt;BR /&gt;image.src=imageToDraw ;&lt;BR /&gt;&lt;BR /&gt;var aspect_width = imageWidth; &lt;BR /&gt;var aspect_height = parseInt( (image.height / image.width ) * imageWidth );&lt;/P&gt;
&lt;P&gt;canvas.width = aspect_width; // target width&lt;BR /&gt;canvas.height =aspect_height; // target height&lt;/P&gt;
&lt;P&gt;ctx.drawImage(image, &lt;BR /&gt;0, 0, image.width, image.height, &lt;BR /&gt;0, 0, aspect_width, aspect_height&lt;BR /&gt;);&lt;BR /&gt;ctx.beginPath(); &lt;BR /&gt;ctx.strokeStyle = IMAGE_BORDER_COLOR; // some color/style&lt;BR /&gt;ctx.lineWidth = IMAGE_BORDER; // thickness&lt;BR /&gt;ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);&lt;BR /&gt;&lt;BR /&gt;return canvas&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Set the the 4 images src values &lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;setImages = function() {&lt;BR /&gt;&lt;BR /&gt;var imagesArray = $scope.view.wdg["3DLabelPhotoListHolder"].text;&lt;BR /&gt;try {&lt;/P&gt;
&lt;P&gt;if (imagesArray.length &amp;gt; 0 ) {&lt;BR /&gt;imagesArray.forEach((value, index, array) =&amp;gt; {&lt;BR /&gt;if (index &amp;lt; NUMBER_OF_HISTORY_IMAGES) {&lt;BR /&gt;id = index+1;&lt;BR /&gt;$scope.app.view.Home.wdg["3DImageHistory"+ id ].src=value.downloadLink ;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;
&lt;P&gt;}&lt;BR /&gt;&lt;BR /&gt;} catch(ex) {&lt;BR /&gt;console.log ("Possible Error: When trying to work through images passed from IOT service there Exception:"+ex);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;resetMessage("...", 5000);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;resetMessage = function ( message , time) {&lt;BR /&gt;if (time != undefined) {&lt;BR /&gt;$timeout(function() { $scope.app.view.Home.wdg["3DLabelMessage"].text= message}, time);&lt;BR /&gt;} else {&lt;BR /&gt;$scope.app.view.Home.wdg["3DLabelMessage"].text= message&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger a services &lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger GetPhotoList of external servce FE_RWTakePhoto_Repo&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.TriggerPhotoList = function () {&lt;BR /&gt;&lt;BR /&gt;resetMessage("...Getting List");&lt;BR /&gt;var parameters = {'numberFilesToReturn' : 4 , 'returnImageContent' : false};&lt;BR /&gt;console.log("Getting PhotoList");&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'GetPhotoList', parameters);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger UploadPhoto of external servce FE_RWTakePhoto_Repo&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.TriggerUpload = function (width) {&lt;/P&gt;
&lt;P&gt;// console.log("Image URL =" + $scope.app.view.Home.wdg["cameraPhoto"].imageUrl); &lt;BR /&gt;UPLOAD_IMAGE_AS_IS = true;&lt;BR /&gt;WIDTH_USED = width;&lt;BR /&gt;&lt;BR /&gt;resetMessage("...Working");&lt;BR /&gt;&lt;BR /&gt;if (width != null &amp;amp;&amp;amp; width != "") {&lt;BR /&gt;UPLOAD_IMAGE_AS_IS = false;&lt;BR /&gt;canvas = drawImageToCanvas($scope.app.view.Home.wdg["cameraPhoto"].imageUrl , width );&lt;BR /&gt;&lt;BR /&gt;contextArray = canvas.toDataURL().split(",");&lt;BR /&gt;&lt;BR /&gt;//console.log("contextArray =" + contextArray[0]);&lt;BR /&gt;//console.log("contextArray =" + contextArray[1]);&lt;BR /&gt;&lt;BR /&gt;var d = new Date();&lt;BR /&gt;var parameters = { 'fileName' : '/' + d.getTime() + '.png', 'imageContent' : contextArray[1] };&lt;BR /&gt;&lt;BR /&gt;console.log("Starting UPLOAD using image size " + width);&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'UploadPhoto', parameters);&lt;/P&gt;
&lt;P&gt;} else {&lt;BR /&gt;&lt;BR /&gt;var uploadDate = new Date();&lt;BR /&gt;var uploadParameters = { 'fileName' : '/' + uploadDate.getTime() + '.png', 'imageContent' : $scope.app.view.Home.wdg["cameraPhoto"].image };&lt;/P&gt;
&lt;P&gt;console.log("Starting UPLOAD using image size as is");&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'UploadPhoto', uploadParameters);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Do action after a service has finished&lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// After UploadPhoto service completes set labels&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("UploadPhoto.serviceInvokeComplete", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;if (UPLOAD_IMAGE_AS_IS) {&lt;BR /&gt;resetMessage("... Uploaded ");&lt;BR /&gt;&lt;BR /&gt;} else {&lt;BR /&gt;resetMessage("... Uploaded width=" + WIDTH_USED);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;resetMessage( "..." , 1000);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// If UploadPhoto service fails inform user&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("UploadPhoto.serviceFailure", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;var chars ;&lt;BR /&gt;try {&lt;BR /&gt;&lt;BR /&gt;chars = $scope.app.view.Home.wdg["cameraPhoto"].imageUrl.substring(0, 100);&lt;BR /&gt;&lt;BR /&gt;} catch (ex) {&lt;BR /&gt;// ignore&lt;BR /&gt;console.log("Error during substring action of image content expection=" + ex); &lt;BR /&gt;}&lt;BR /&gt;resetMessage("... Upload Failed try again!");&lt;BR /&gt;&lt;BR /&gt;console.log("Upload Failed - please check user is logged in otherwise upload will fail. The returned args="+ arg.message.message + "The ouput here shows the first 100 chars of content " + chars);&lt;BR /&gt;&lt;BR /&gt;resetMessage( "...", 5000);&lt;/P&gt;
&lt;P&gt;} &lt;BR /&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// After GetPhotoList service completes set Images&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("GetPhotoList.serviceInvokeComplete", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;$scope.$applyAsync();&lt;BR /&gt;$timeout(function() { setImages();}, 1000);&lt;BR /&gt;&lt;BR /&gt;} &lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// If GetPhotoList service fails inform user&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("GetPhotoList.serviceFailure", function(evt, arg)&lt;BR /&gt;{&lt;/P&gt;
&lt;P&gt;resetMessage( "... Get List Failed!");&lt;BR /&gt;resetMessage( "...", 5000);&lt;BR /&gt;&lt;BR /&gt;} &lt;BR /&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 31 May 2022 19:55:56 GMT</pubDate>
    <dc:creator>sgreywilson</dc:creator>
    <dc:date>2022-05-31T19:55:56Z</dc:date>
    <item>
      <title>Hololens and Image capture</title>
      <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Hololens-and-Image-capture/m-p/799274#M10912</link>
      <description>&lt;P&gt;In the past&amp;nbsp; I have posted how to do image capture in mobile. Here is a HoloLens approach - the link is to a video that talks about the approach&amp;nbsp;&lt;A class="c-link" tabindex="-1" href="https://www.brainshark.com/ptc/vu?pi=zGizA1n5IzBRxnz0" target="_blank" rel="noopener noreferrer" data-stringify-link="https://www.brainshark.com/ptc/vu?pi=zGizA1n5IzBRxnz0" data-sk="tooltip_parent" data-remove-tab-index="true"&gt;https://www.brainshark.com/ptc/vu?pi=zGizA1n5IzBRxnz0&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="sgreywilson_0-1654012354816.jpeg" style="width: 400px;"&gt;&lt;img src="https://www.ptcusercommunity.com/t5/image/serverpage/image-id/58154iC5FBD7A3CE831EEE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="sgreywilson_0-1654012354816.jpeg" alt="sgreywilson_0-1654012354816.jpeg" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 May 2022 15:55:05 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Hololens-and-Image-capture/m-p/799274#M10912</guid>
      <dc:creator>sgreywilson</dc:creator>
      <dc:date>2022-05-31T15:55:05Z</dc:date>
    </item>
    <item>
      <title>Re: Hololens and Image capture</title>
      <link>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Hololens-and-Image-capture/m-p/799299#M10914</link>
      <description>&lt;P&gt;Sometimes looking at code can help provide different insights&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// $scope, $element, $attrs, $injector, $sce, $timeout, $http, $ionicPopup, and $ionicPopover services are available&lt;/P&gt;
&lt;P&gt;console.log($scope.app);&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// Globals indicated by uppercase naming&lt;BR /&gt;// // **************************************************************************************************************&lt;/P&gt;
&lt;P&gt;var WIDTH_USED ;&lt;BR /&gt;var UPLOAD_IMAGE_AS_IS;&lt;BR /&gt;var NUMBER_OF_HISTORY_IMAGES = 4;&lt;BR /&gt;var IMAGE_BORDER = 15;&lt;BR /&gt;var IMAGE_BORDER_COLOR = '#FFF832';&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;//&lt;BR /&gt;// Local functions &lt;BR /&gt;// These functions can not be used directly with studio&lt;BR /&gt;// The are help function to make the main $scope visible function be more readable&lt;BR /&gt;//&lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// draw image to a canvas to reduce size &lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;drawImageToCanvas = function (imageToDraw , imageWidth) {&lt;/P&gt;
&lt;P&gt;var canvas = document.createElement("canvas");&lt;BR /&gt;var ctx = canvas.getContext("2d");&lt;/P&gt;
&lt;P&gt;var image = new Image();&lt;BR /&gt;image.src=imageToDraw ;&lt;BR /&gt;&lt;BR /&gt;var aspect_width = imageWidth; &lt;BR /&gt;var aspect_height = parseInt( (image.height / image.width ) * imageWidth );&lt;/P&gt;
&lt;P&gt;canvas.width = aspect_width; // target width&lt;BR /&gt;canvas.height =aspect_height; // target height&lt;/P&gt;
&lt;P&gt;ctx.drawImage(image, &lt;BR /&gt;0, 0, image.width, image.height, &lt;BR /&gt;0, 0, aspect_width, aspect_height&lt;BR /&gt;);&lt;BR /&gt;ctx.beginPath(); &lt;BR /&gt;ctx.strokeStyle = IMAGE_BORDER_COLOR; // some color/style&lt;BR /&gt;ctx.lineWidth = IMAGE_BORDER; // thickness&lt;BR /&gt;ctx.strokeRect(0, 0, ctx.canvas.width, ctx.canvas.height);&lt;BR /&gt;&lt;BR /&gt;return canvas&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Set the the 4 images src values &lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;setImages = function() {&lt;BR /&gt;&lt;BR /&gt;var imagesArray = $scope.view.wdg["3DLabelPhotoListHolder"].text;&lt;BR /&gt;try {&lt;/P&gt;
&lt;P&gt;if (imagesArray.length &amp;gt; 0 ) {&lt;BR /&gt;imagesArray.forEach((value, index, array) =&amp;gt; {&lt;BR /&gt;if (index &amp;lt; NUMBER_OF_HISTORY_IMAGES) {&lt;BR /&gt;id = index+1;&lt;BR /&gt;$scope.app.view.Home.wdg["3DImageHistory"+ id ].src=value.downloadLink ;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;
&lt;P&gt;}&lt;BR /&gt;&lt;BR /&gt;} catch(ex) {&lt;BR /&gt;console.log ("Possible Error: When trying to work through images passed from IOT service there Exception:"+ex);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;resetMessage("...", 5000);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;resetMessage = function ( message , time) {&lt;BR /&gt;if (time != undefined) {&lt;BR /&gt;$timeout(function() { $scope.app.view.Home.wdg["3DLabelMessage"].text= message}, time);&lt;BR /&gt;} else {&lt;BR /&gt;$scope.app.view.Home.wdg["3DLabelMessage"].text= message&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger a services &lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger GetPhotoList of external servce FE_RWTakePhoto_Repo&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.TriggerPhotoList = function () {&lt;BR /&gt;&lt;BR /&gt;resetMessage("...Getting List");&lt;BR /&gt;var parameters = {'numberFilesToReturn' : 4 , 'returnImageContent' : false};&lt;BR /&gt;console.log("Getting PhotoList");&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'GetPhotoList', parameters);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// Trigger UploadPhoto of external servce FE_RWTakePhoto_Repo&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.TriggerUpload = function (width) {&lt;/P&gt;
&lt;P&gt;// console.log("Image URL =" + $scope.app.view.Home.wdg["cameraPhoto"].imageUrl); &lt;BR /&gt;UPLOAD_IMAGE_AS_IS = true;&lt;BR /&gt;WIDTH_USED = width;&lt;BR /&gt;&lt;BR /&gt;resetMessage("...Working");&lt;BR /&gt;&lt;BR /&gt;if (width != null &amp;amp;&amp;amp; width != "") {&lt;BR /&gt;UPLOAD_IMAGE_AS_IS = false;&lt;BR /&gt;canvas = drawImageToCanvas($scope.app.view.Home.wdg["cameraPhoto"].imageUrl , width );&lt;BR /&gt;&lt;BR /&gt;contextArray = canvas.toDataURL().split(",");&lt;BR /&gt;&lt;BR /&gt;//console.log("contextArray =" + contextArray[0]);&lt;BR /&gt;//console.log("contextArray =" + contextArray[1]);&lt;BR /&gt;&lt;BR /&gt;var d = new Date();&lt;BR /&gt;var parameters = { 'fileName' : '/' + d.getTime() + '.png', 'imageContent' : contextArray[1] };&lt;BR /&gt;&lt;BR /&gt;console.log("Starting UPLOAD using image size " + width);&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'UploadPhoto', parameters);&lt;/P&gt;
&lt;P&gt;} else {&lt;BR /&gt;&lt;BR /&gt;var uploadDate = new Date();&lt;BR /&gt;var uploadParameters = { 'fileName' : '/' + uploadDate.getTime() + '.png', 'imageContent' : $scope.app.view.Home.wdg["cameraPhoto"].image };&lt;/P&gt;
&lt;P&gt;console.log("Starting UPLOAD using image size as is");&lt;BR /&gt;twx.app.fn.triggerDataService('FE_RWTakePhoto_Repo', 'UploadPhoto', uploadParameters);&lt;BR /&gt;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// Do action after a service has finished&lt;BR /&gt;// *****************************************************************************************************************&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// After UploadPhoto service completes set labels&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("UploadPhoto.serviceInvokeComplete", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;if (UPLOAD_IMAGE_AS_IS) {&lt;BR /&gt;resetMessage("... Uploaded ");&lt;BR /&gt;&lt;BR /&gt;} else {&lt;BR /&gt;resetMessage("... Uploaded width=" + WIDTH_USED);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;resetMessage( "..." , 1000);&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// If UploadPhoto service fails inform user&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("UploadPhoto.serviceFailure", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;var chars ;&lt;BR /&gt;try {&lt;BR /&gt;&lt;BR /&gt;chars = $scope.app.view.Home.wdg["cameraPhoto"].imageUrl.substring(0, 100);&lt;BR /&gt;&lt;BR /&gt;} catch (ex) {&lt;BR /&gt;// ignore&lt;BR /&gt;console.log("Error during substring action of image content expection=" + ex); &lt;BR /&gt;}&lt;BR /&gt;resetMessage("... Upload Failed try again!");&lt;BR /&gt;&lt;BR /&gt;console.log("Upload Failed - please check user is logged in otherwise upload will fail. The returned args="+ arg.message.message + "The ouput here shows the first 100 chars of content " + chars);&lt;BR /&gt;&lt;BR /&gt;resetMessage( "...", 5000);&lt;/P&gt;
&lt;P&gt;} &lt;BR /&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;// *****************************************************************************************************************&lt;BR /&gt;// After GetPhotoList service completes set Images&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("GetPhotoList.serviceInvokeComplete", function(evt, arg)&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;$scope.$applyAsync();&lt;BR /&gt;$timeout(function() { setImages();}, 1000);&lt;BR /&gt;&lt;BR /&gt;} &lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;// If GetPhotoList service fails inform user&lt;BR /&gt;// *****************************************************************************************************************&lt;BR /&gt;$scope.$on("GetPhotoList.serviceFailure", function(evt, arg)&lt;BR /&gt;{&lt;/P&gt;
&lt;P&gt;resetMessage( "... Get List Failed!");&lt;BR /&gt;resetMessage( "...", 5000);&lt;BR /&gt;&lt;BR /&gt;} &lt;BR /&gt;&lt;BR /&gt;)&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 31 May 2022 19:55:56 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Vuforia-Studio/Hololens-and-Image-capture/m-p/799299#M10914</guid>
      <dc:creator>sgreywilson</dc:creator>
      <dc:date>2022-05-31T19:55:56Z</dc:date>
    </item>
  </channel>
</rss>

