Crop - AppDaddy-Software-Solutions-Inc/framework-markup-language GitHub Wiki

Overview

The CROP transform is used to transform an Image Datasource. The CROP transform is used to crop a CAMERA, FILEPICKER or Data Uri image field using a the specified offset (x, y) position, width and height.

Restrictions:

Attributes

Name Type Default Description Req
id string Datasource id to allow binding
source string The field name of the image source. This can also be a bound {} value
target string The field name of the image target. If omitted, it uses the source field (overwrite)
enabled bool true If false, the transform is not applied
x int 0 The x offset from the top left corner of the source image
y int 0 The y offset from the top left corner of the source image
width int The width in pixels to crop from the x,y offset
height int The height in pixels to crop from the x,y offset

Examples

Example #1

This example shows how to select an image from a filepicker, mantain the original image in "fp1" and transform the chosen image using CROP.

Partial Example (important bits)

<FML>
<FILEPICKER id="fp1" allow=".jpg,.png">
	<DATA id="ds1">
		<CROP source="{fp1.data.file}" x="{x}" y="{y}" width="{w}" height="{h}"/>	
	</DATA>
</FILEPICKER>
</FML>

Full Example

<FML>
    <!-- File Picker Data Source -->
    <FILEPICKER id="fp1" allow=".jpg,.png">
        <DATA id="ds1">
            <CROP source="{fp1.data.file}" x="{x}" y="{y}" width="{w}" height="{h}"/>   
        </DATA>
    </FILEPICKER>

    <PAD top="20"/>

    <!-- This is the original image -->
    <TEXT size="12" label="ORIGINAL"/>
    <BOX expand="false" width="200" border="all" pad="10" radius="5" layout="stack" center="true">
        <IMAGE url="{fp1.data.file}"/>
        <BUSY visible="{ds2.busy}" size="30"/>
    </BOX>
    <PAD top="10"/>
    <TEXT size="12" label="CROPPED"/>

    <!-- This is the transformed image -->
    <BOX expand="false" width="200" border="all" pad="10" radius="5" layout="stack" center="true">
        <IMAGE url="{ds1.data.file}"/>
        <BUSY visible="{ds1.busy}" size="30"/>
    </BOX>

    <PAD top="10"/>

    <ROW expand="false">
    
        <!-- user specified offsets --> 
        <INPUT id="x" hint="x offset" value="0"   allow="0-9" width="60"/>
        <PAD left="2"/>
        <INPUT id="y" hint="y offset" value="0"   allow="0-9" width="60"/>

        <!-- user specified width and height -->
        <PAD left="2"/>
        <INPUT id="w" hint="width"    value="100" allow="0-9" width="60"/>
        <PAD left="2"/>
        <INPUT id="h" hint="height"   value="100" allow="0-9" width="60"/>
        
    </ROW>

    <PAD top="10"/>

    <LINK onclick="fp1.start()">
        <ICON icon="add_a_photo" visible="=!{fp1.busy}"/>
    </LINK>         
</FML>

logo See it in Action

Other Widgets You May Find Useful

⚠️ **GitHub.com Fallback** ⚠️