radykal | Support Center Chooser

For which product do you need support?

Fancy Product Designer Multistep Product Configurator

Start a new topic
Implemented

Export bounding box only

Hi,


I really would like to see the export functions to be changed. Currently the entire design area is being exported and I only want to export the items within the bounding box. All my products use the same bounding box.


See screenshot. The door is the area where the design is, the doorframe is the bounding box. When exporting the order design from WooCommerce I only want the door including all layers to be exported, not the background area.


Please include this in a next version.


Cheers,
Jaap

jpg

19 people like this idea

Thanks for the info, Adrienne. I tried your code yesterday but it didn't work for me. Haven't tried too hard though - so I will give it another shot. As for the scaling, the exporting stops working when I scale up the files. Guess they're too big or time out somehow. Server settings are okay, so it's not that. My hope is it could work if it's only exporting the Bounding Box area.

Andreas, I had a similar issue with scaling up. The problem ended up being that the dataURL of the image became too large and some browsers put a limit on dataURL size (Chrome and Safari on iOS have this problem, Firefox seems to be ok though). 


For the front end, I ended up adding additional lines of code that checks to see if the customer is using iOS and slightly scales down the image so that it will export and save to my server, but it's still print quality. 


Sometimes I need to export large, scaled up images in FPD in admin and save them to my PC for printing. I use Google Chrome and needed a way to get around the dataURL limit.  I added code that converts the large dataURL to a blob object and that allows me to save large jpg files to my PC using Chrome. 


It's ridiculous that is not implemented yet (in wordpress plugin).


Hi. 


Of course you can delete layers, but if you have 500 orders to process... that's a lot of manual labour! And prone to make mistakes! Automation is the best way to avoid production errors. 


And why does the plugin export the ENTIRE stage if we define a bounding box so that we can limit the users drawing area? 

You can have a Stage with 1000 by 1000 pixels with a beautiful background, but have only a 500 by 500 pixels drawing area! Why do you have to export THE ENTIRE STAGE for production?? It makes no sense! Why? Because after the export operation the store operator has to edit the EVERY file in photoshop, crop out the 500 by 500 pixels from the image for printing production! 


And now Imagine that with 3 initial stage layers, like your iPhone cover example, that serve only so that the user has a visual guidance while drawing inside a bounding box that will contain the final drawing for production. You will not print out those 3 initial layers! You only want the final user drawing. 


Now imagine to process 500 orders, and having to remove 3 layers in each order!! Thats 1500 layers you have to remove, one by one!!  And manually crop 500 images, one by one after export! Try that yourself. use the iPhone cover example, try to draw a multi-layer cover for yourself, and then try to process that order, printing the final drawing in your printer WITHOUT the initial 3 layers and only the bounding box area!


Your plugin is great for online drawing pretty Pinterest images, good for sharing in social networks by the user, but regarding to the store owner labour, and production wise, your plugin is not workflow optimized! You would get A LOT of happy plugin customers, and increase your sales, by allowing to automate some repetitive steps! You have to think that your direct clients are companies that do some kind of production!


How can you improve your plugin?


  • create a "NO EXPORT" flag in the Product Builders Layers, and respect that flag when exporting the final image
  • Export only whats inside of the bounding box, clipping out the rest of the STAGE. For printing production we need a good hires image
  • Create a "Save as default settings" in the export options, so that you don't have to type the DPI and the scale factor FOR EVERY ORDER :(


Are you creating a online drawing tool, or a excellent production tool?


Best regards,


Paulo Carrasco


Hi,


I had the same problem. I didn't want to include the entire stage area in the exported image file.  I managed to solve the problem by adding the function below to the js file. You define the element that you want to use as the bounding box. It returns the dataURL of the cropped image. Then I save the file to my server using an ajax call. 


Honestly, I don't know much about Javascript and jQuery so this might not be the best way to go about it. But it works great for me. I am using this on the jQuery version of the plugin, but it should work for WooCommerce too because I believe they use the same js file. You'd probably need to edit a template file to call the function. 


this.getCroppedImage = function(format, backgroundColor, multiplier) {

    instance.deselectElement();

    instance.currentViewInstance.stage.setDimensions({

        width: instance.currentViewInstance.options.stageWidth,

        height: instance.currentViewInstance.options.stageHeight

    }).setZoom(1);

    var boundingObj = instance.getElementByTitle('Door'); // Title of the element that will be used as the bounding box. Everything outside of this element will be cropped out

    var myGroup = new fabric.Group();

    // ensure originX/Y 'center' is being used, as text uses left/top by default.

    myGroup.set({

        originX: 'center',

        originY: 'center'

    });

    // clone objects and put them in new group

    var i = instance.currentViewInstance.stage.getObjects().length;

    while (i--) {

        var clone = fabric.util.object.clone(instance.currentViewInstance.stage.item(i));

        clone.title = clone.title + 'clone';

        myGroup.addWithUpdate(clone).setCoords();

        clone.sendToBack;

    }

    instance.currentViewInstance.stage.add(myGroup);

    myGroup.sendToBack();

    instance.currentViewInstance.stage.renderAll();

    if (typeof boundingObj !== 'undefined') {

        var boundingRectangle = boundingObj.getBoundingRect();

    } else {

        // get bounding rect for new group

        var i = instance.currentViewInstance.stage.getObjects().length;

        while (--i) {

            var objType = instance.currentViewInstance.stage.item(i).type;

            if (objType == 'group') {

                var boundingRectangle = instance.currentViewInstance.stage.item(i).getBoundingRect();

            }

        }

    }

    var dataURL = instance.currentViewInstance.stage.toDataURL({

        format: 'png',

        multiplier: 4,

        left: boundingRectangle.left,

        top: boundingRectangle.top,

        width: boundingRectangle.width,

        height: boundingRectangle.height,

        backgroundColor: 'transparent'

    });

    instance.currentViewInstance.stage.remove(myGroup);

    return dataURL; //returns cropped image

};

+1 (thumbs up) to what Joao said. I am also really looking forward to it. We all appreciate the hard work Radykal. Let us know if you need help.

Like I said, I was just implying that it would be nice to get more frequent updates on progress.




 

+1 for this feature being available to the front-end customer.

This is a great idea! Today's industry has a very high tempo and automation is vital! At the same time one must offer the best good looking products to the customer. In this case it means that we need to offer the product in a context (for instance, a canvas in a living room) so that the customer has a "hands on" experience. To remove these extra elements that we use for sales increasing in every single order is just madness!


I hope this function gets implemented and I look forward for it!

I am happy to announce that the new PDF export is now available in our ADMIN solution. This allows among other features to export a specific printing area.


Solution article can be found here: https://support.fancyproductdesigner.com/support/solutions/articles/13000054514-exporting-a-layered-pdf-to-any-format


If you have some problems and want to give your feedback, please head over to that thread, I am going to close this one now.

Would love to know when this will be available - along with exporting to SVG.

Confirmed that the fix does not work in WP 4.7 with WooCommerce. Does the plugin developer look at these message boards often? This should be top priority on an upcoming development sprint.

I also think like you Brent. If this thing does not work out I think I'll get my money back. It just does not meet the requirements I have. However, it is to make our work easier, not to overload it. Right?

It is not a problem to change the code, but without having any guidance, it can not be done. I have little knowledge of Javascript and jQuery.

On a similar note and to further rationalise the work flow for certain situations I suggest adding a direct link to the original image uploaded by the customer in export options.

When your product doesn't involve adding text or modifying the image as such, but just positioning it within a frame (bounding box) - for instance with a canvas print. The original, unprocessed image is what you will work with.

Yes, you will need the bounding box export as a guide as you create the canvas, but you won't use that to create the canvas. Currently exporting 'single elements' only gives access to the version of the image that has been whizzed by FPD - even if the export settings are use original size and no bounding box it is the image that lives in  /wp-content/fancy_products_orders/images/ not the original which lives in /wp-content/uploads/fancy-product-uploads/ that is exported and seems to be a huge file compared to the original.

Currently accessing /wp-content/uploads/fancy-product-uploads/ is a problem for the non-technical shop owner (like my current client). It's one of the things preventing me from using this plugin in production. 

Surely it is not a major modification to add this to export options?

Thank you

Looks like I had just forgotten to add the code in the minified version of the file (FancyProductDesigner-all.min.js). Did that, and the Download button in the Designer produced the cropped file right away. Thanks Adrienne!


BUT – it did not have any effect on the Admin-side of things, and that's where the cropped HQ file is needed.


Did you also change something in the "order-viewer.js" file perhaps?

I need this exact same ability. I need to export only what is within the bounding box.
Can someone smarter than me tell me where to add this code for the wordpress plugin?

thank you