<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Felix – IMG.LY Blog</title><description>Posts by Felix on the IMG.LY blog.</description><link>https://img.ly/blog/author/felix/</link><language>en-us</language><image><url>https://img.ly/apple-touch-icon.png</url><title>Felix – IMG.LY Blog</title><link>https://img.ly/blog/author/felix/</link></image><atom:link href="https://img.ly/blog/author/felix/rss.xml" rel="self" type="application/rss+xml"/><generator>Astro</generator><lastBuildDate>Tue, 09 Jun 2026 13:47:26 GMT</lastBuildDate><ttl>60</ttl><item><title>The future is Video — the future is now!</title><link>https://img.ly/blog/the-future-is-video-the-future-is-now-f5b3911023f6/</link><guid isPermaLink="true">https://img.ly/blog/the-future-is-video-the-future-is-now-f5b3911023f6/</guid><description>Introducing VideoEditor SDK for iOS and Android</description><pubDate>Tue, 13 Aug 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/products/video-sdk/&quot;&gt;VideoEditor SDK&lt;/a&gt; expands the powerful tools and features of &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; into the realm of mobile video creation, empowering you to seamlessly integrate a cinematic experience into your mobile applications.With an intuitive and elegant UI, an extensive filter gallery, advanced adjustment tools, and crops for social aspect ratios you’ll gift your users with the ability to create engaging and professional-looking videos on the fly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/embed/FDuwEtBf8N8?feature=oembed&quot;&gt;https://www.youtube.com/embed/FDuwEtBf8N8?feature=oembed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Video is one of the most effective means of communication in our era. According to &lt;a href=&quot;https://blog.hubspot.com/marketing/state-of-video-marketing-new-data&quot;&gt;Hubspot&lt;/a&gt;, the usage and consumption of video content continue to grow and still haven’t reached their saturation point. Video is changing the way we interact on a daily basis, and it’s here to stay.&lt;/p&gt;
&lt;p&gt;Although most videos are shot spontaneously and then posted instantly, even slight editing can have a tremendous effect on the content’s impact. VideoEditor SDK lets your users create professional-looking footage without having to rely on external apps while using your solution. The SDK is packed with intuitive yet powerful tools that allow for the creation of an endless variety of stunning visual effects. All tools come with an instant preview and can be tailored to fit your app perfectly.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;trimming--transformation-keeping-itrelevant&quot;&gt;Trimming &amp;#x26; Transformation: Keeping it relevant&lt;/h2&gt;
&lt;p&gt;The Trimming tool helps your users to keep their content on point and to get rid of unnecessary, boring, or unwanted parts with ease. Furthermore, the SDK is equipped with a Transform tool kit that unifies cropping, flipping, and rotating operations. Featuring various preset video aspect ratios most popular for Instagram (1:1), YouTube (16:9) or other platforms like Snapchat (9:16) — the tool lets your users present their content in the most appropriate format.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;video-grading-the-hollywood-look-andfeel&quot;&gt;Video grading: The Hollywood look and feel&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/products/video-sdk/&quot;&gt;VideoEditor SDK&lt;/a&gt; ships with over 60 video filters that let your users achieve a cinematic look for their videos with a single tap. Additionally, the Adjustment section holds a variety of handy tools to tweak and fine-tune video content ranging from basic operations like brightness and contrast to more sophisticated options like exposure and gamma. Through instant preview, your users can directly see how their changes affect the final video.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;captioning-and-assets-compelling-storytelling&quot;&gt;Captioning and Assets: Compelling storytelling&lt;/h2&gt;
&lt;p&gt;Video is a narrational medium and VideoEditor SDK provides all necessary functions for your users to quickly turn their footage into engaging and attention-grabbing stories. They can customize their videos with captions using the Text tool or add a stunning typography design with the Text Design tool that automatically merges input text with designer-grade typography layouts.&lt;/p&gt;
&lt;p&gt;On top of that, the SDK ships with various asset libraries for your users to personalize their content with Stickers, Frames, or Overlays to create something they’ll love to share.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;learn-more-about-videoeditor-sdk-and-delight-your-users-with-powerful-video-editing-capabilities&quot;&gt;Learn more about &lt;a href=&quot;https://img.ly/products/video-sdk/&quot;&gt;VideoEditor SDK&lt;/a&gt; and delight your users with powerful video editing capabilities.&lt;/h2&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-30.png" medium="image"/><category>Videos</category><category>iOS</category><category>Android</category><category>App Development</category><category>Video Editing</category><category>Tech</category><category>How-To</category><category>Learning</category></item><item><title>How to integrate a Photo Editor into your iOS App</title><link>https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-ios-app-ced008a7088b/</link><guid isPermaLink="true">https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-ios-app-ced008a7088b/</guid><description>7-minute Video Tutorial</description><pubDate>Wed, 10 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This tutorial is going to walk you through the integration process of the PhotoEditor SDK for iOS. You’ll learn how to setup the editor in seven minutes using CocoaPods. We created similar tutorials for &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-android-app-ee4148816e25/&quot;&gt;Android&lt;/a&gt; and &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-website-4578cc6ef6f3/&quot;&gt;HTML5&lt;/a&gt;, so make sure to check those out as well.(Please make sure to get a trial license for the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; before integrating it.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/embed/AHzD4Mnm-NA?feature=oembed&quot;&gt;https://www.youtube.com/embed/AHzD4Mnm-NA?feature=oembed&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;transcript&quot;&gt;&lt;strong&gt;Transcript&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;In this tutorial, we’re going to show you how to integrate the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; into your iOS app. We’re going to use Xcode and the &lt;a href=&quot;https://img.ly/docs/pesdk/&quot;&gt;PhotoEditor SDK’s documentation&lt;/a&gt;. So, first of all, we navigate to the “Getting Started” guide for iOS. We’re going to install the SDK using CocoaPods, because it is the recommended way to initialize this dependency.&lt;/p&gt;
&lt;p&gt;We create a new Xcode project and select the “Single View App” template. Then, we assign a name to our project. For this tutorial, we’ll go with “PhotoEditorApp.” Here, it is essential that the given bundle identifier is identical to the one you used to request your license with. We decide to save our project files to the documents folder and create the new project.&lt;/p&gt;
&lt;p&gt;Now, we change the iOS Deployment Target to version 9.0 as the SDK supports all iOS versions from 9.0 upwards, and thus, our app will be available for the highest possible number of devices. After that, we insert our previously downloaded license file into our app by simply dragging and dropping the file into our app’s folder. Here, it’s important that “Copy items if needed” is checked so that our license file will be copied to the appropriate place in our project instead of just being referenced.&lt;/p&gt;
&lt;p&gt;Now, we can close our Xcode project. We open our folder structure and see that our project has been created in the documents folder. Now, we need the terminal to install the PhotoEditor SDK via CocoaPods. We type &lt;code&gt;cd&lt;/code&gt; which is short for “change directory”, to change the directory of our source files. We can copy the project’s path via drag and drop. We now instruct CocoaPods to prepare Xcode for the use with CocoaPods by typing &lt;code&gt;pod init&lt;/code&gt;. After that, CocoaPods creates the file “podfile.” We open the podfile in a text editor by double-clicking.&lt;/p&gt;
&lt;p&gt;Here, we uncomment the second line and thus define that our project shall run from iOS version 9.0 upwards. Next, we copy this line (&lt;code&gt;pod &apos;PhotoEditorSDK&apos;&lt;/code&gt;) from the &lt;a href=&quot;https://img.ly/docs/pesdk/&quot;&gt;PhotoEditor SDK’s documentation&lt;/a&gt; and paste it under &lt;code&gt;# Pods for PhotoEditorApp&lt;/code&gt; to create a dependency between our project and the PhotoEditor SDK. We save the podfile and close the text editor. Now, we return to the terminal and instruct CocoaPods to install all dependencies by typing &lt;code&gt;pod install&lt;/code&gt; and executing our command with the return key.&lt;/p&gt;
&lt;p&gt;Here we can see that CocoaPods advises us to open our Xcode project with the xcworkspace file only. Furthermore, we see that there’s now a new folder called “pods.” Ideally, you wouldn’t check that folder into your source control system as it potentially contains large files, which can result in some issues. Github, for example, has a limit for the maximum file size, which the PhotoEditor SDK would exceed. So, it would be best if every user that works on the project activates &lt;code&gt;pod install&lt;/code&gt; to install the dependencies for each processing machine.&lt;/p&gt;
&lt;p&gt;Now, we can open the project file to incorporate our license into the file &lt;code&gt;AppDelegate.swift&lt;/code&gt;. We copy this line from our documentation and paste it under the method &lt;code&gt;UIApplication, didfinishLaunchingWithOptions&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;if let licenseURL = Bundle.main.url(forResource: &quot;license&quot;, withExtension: &quot;&quot;) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    PESDK.unlockWithLicense(at: licenseURL)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is important that we name our license file exactly like we did when we incorporated it into our project. In our case, that would be “ios_license” instead of “license.” Also, we can see that there is an error message, because we haven’t imported the PhotoEditor SDK yet. We simply type &lt;code&gt;**import** PhotoEditorSDK&lt;/code&gt;, and the issue is resolved. Now our project is prepared so that we can use the PhotoEditor SDK with an active license.&lt;/p&gt;
&lt;p&gt;Next, we’re going to prepare our app, so that it actually uses the PESDK. We configure our app with the &lt;code&gt;Main.storyboard&lt;/code&gt; by opening the &lt;code&gt;assistantview&lt;/code&gt; and creating a new button by just dragging and dropping it on the canvas. We’re going to use Alignment Constraints so that the button will always be displayed in the middle of the screen no matter the form factor of the device in use.&lt;/p&gt;
&lt;p&gt;We’re going to name our button after our app and link it from our storyboard with our source code on the right-hand side via drag and drop. Now, we’re going to set a name for our method that is going to be called once the button is pressed. For this tutorial, we’ll go with &lt;code&gt;startPhotoEditor&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;We’ve decided that we want to start the PhotoEditor SDK with a CameraViewController. So, we copy the respective code from our documentation and paste it in the body of our method under &lt;code&gt;startPhotoEditor&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;let cameraViewController = CameraViewController()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;present(cameraViewController, animated: true, completion: nil)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When we save the file, we get yet another error message that the camera can’t be found because we haven’t imported the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; for this source file either. Once we’ve done that, the error message disappears.&lt;/p&gt;
&lt;p&gt;As we want our editor to start in camera mode, we have to create some entries in the Info.plist file that will allow us to use our device’s camera and grant access to our device’s image library. That is a restriction by Apple. If we didn’t create these entries, we wouldn’t be able to use our app as it would crash as soon as we open the camera. All necessary entries can be found under “Privacy.” First, we need “Camera Usage Description.” Here, we have to give a reason why we want access to our user’s camera. Said reason should be as meaningful as possible. For this tutorial, we’ll go with “We use your camera to take photos for editing.” We also want to allow the import of photos from the device’s library, so we add the identifier “Photo Library Usage Description” and type “We use your photos so that you can edit them” as description.&lt;/p&gt;
&lt;p&gt;Now, we can run the app in the simulator. If we wanted to run the app on a physical device, we’d have to provide an Apple iOS developer account under “Team” so that the app can be signed because only registered developers are allowed to install apps on physical devices. However, we’ll go with the simulator.&lt;/p&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-32.png" medium="image"/><category>iOS</category><category>App Development</category><category>CocoaPods</category><category>Tutorial</category><category>Technology</category><category>Tech</category><category>How-To</category><category>Learning</category></item><item><title>How to integrate a Photo Editor into your Website</title><link>https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-website-4578cc6ef6f3/</link><guid isPermaLink="true">https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-website-4578cc6ef6f3/</guid><description>4-minute Video Tutorial </description><pubDate>Wed, 10 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This tutorial is going to walk you through the integration process of the PhotoEditor SDK into your website. You’ll learn how to setup the HTML5 editor in four minutes. We created similar tutorials for &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-ios-app-ced008a7088b/&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-android-app-ee4148816e25/&quot;&gt;Android&lt;/a&gt;, so make sure to check those out as well.(Please make sure to get a trial license for the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; before integrating it.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/embed/9ZfEN3LMJU8?feature=oembed&quot;&gt;https://www.youtube.com/embed/9ZfEN3LMJU8?feature=oembed&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;transcript&quot;&gt;Transcript&lt;/h3&gt;
&lt;p&gt;In this tutorial, we’re going to show you how to integrate the PhotoEditor SDK for HTML5 into your website. We’re going to use Visual Studio Code and the &lt;a href=&quot;https://img.ly/docs/pesdk/&quot;&gt;PhotoEditor SDK’s documentation&lt;/a&gt;. So let’s get to it.&lt;/p&gt;
&lt;p&gt;We unzip the file and copy the &lt;code&gt;assets&lt;/code&gt;, &lt;code&gt;css&lt;/code&gt; and &lt;code&gt;js&lt;/code&gt; folder. Those contain all the elements our editor needs to run properly. We paste the folders into our project folder. For this demo, we want to open a sample image with the editor, so we copy that into our folder as well.&lt;/p&gt;
&lt;p&gt;Here, we already opened our project’s folder with Visual Studio Code. Next, we’re going to create an HTML file that we’re going to use to build our site. We copy this code for the &lt;code&gt;&amp;#x3C;head&gt;&lt;/code&gt; section and paste it into our &lt;code&gt;index.html&lt;/code&gt; file.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;head&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;!-- React Dependencies for the SDK UI --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;script src=&quot;js/vendor/react.production.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;script src=&quot;js/vendor/react-dom.production.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;!-- PhotoEditor SDK--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;script src=&quot;js/PhotoEditorSDK.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;!-- PhotoEditor SDK UI --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;script src=&quot;js/PhotoEditorSDK.UI.DesktopUI.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;link rel=&quot;stylesheet&quot; href=&quot;css/PhotoEditorSDK.UI.DesktopUI.min.css&quot; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;/head&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here’s where we link to the JavaScript files from our &lt;code&gt;js&lt;/code&gt; folder. Please note that if you store the folder somewhere else, you have to adjust these paths accordingly. Also, this is where the css file for our desktop UI is loaded.&lt;/p&gt;
&lt;p&gt;Next, we’re going to add a &lt;code&gt;&amp;#x3C;body&gt;&lt;/code&gt; to our site. Then we’ll need a &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt; where our editor is going to be displayed. For that, we can simply copy the snippet from the documentation.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;div id=&quot;editor&quot;&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;&amp;#x3C;div&gt;&lt;/code&gt;’s ID is set to &lt;code&gt;editor&lt;/code&gt; so we can address it via JavaScript. Now, we copy this JavaScript snippet from the documentation so that the editor loads properly.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  window.onload = function () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    var image = new Image()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    image.onload = function () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        var container = document.getElementById(&apos;editor&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        var editor = new PhotoEditorSDK.UI.DesktopUI({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        container: container,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Please replace this with your license: https://www.photoeditorsdk.com/dashboard/subscriptions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        license: &apos;{&quot;owner&quot;:&quot;Imgly Inc.&quot;,&quot;version&quot;:&quot;2.1&quot;, ...}&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        editor: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          image: image&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        assets: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          // This should be the absolute path to your `assets` directory&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          baseUrl: &apos;/assets&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // image.crossOrigin = &apos;Anonymous&apos;  // Setup CORS accordingly if needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    image.src = &apos;./example.jpg&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We have already prepared our license file here. It is important to copy the entire content of the license file and paste it after &lt;code&gt;license&lt;/code&gt;. Also, it is important to insert the license as a string and not as a JavaScript object.&lt;/p&gt;
&lt;p&gt;Please make sure that under &lt;code&gt;baseUrl&lt;/code&gt; you have entered the correct path to your assets folder.&lt;/p&gt;
&lt;p&gt;Under &lt;code&gt;image.src&lt;/code&gt; we load our image. Please note that if you don’t load the image locally but from another source, say a server like an AWS S3 bucket, you have to setup CORS properly. We dedicated a whole section in our documentation to this issue, so make sure to check that out. However, as we’re going to load the image locally, we don’t have to mind that line.&lt;/p&gt;
&lt;p&gt;Finally, it is important that we create the editor after the image is loaded so that we can pass the image to the editor.&lt;/p&gt;
&lt;p&gt;Alright, we’re set. Now we can test everything by running a server. We’ll go with the SimpleHTTPServer.&lt;/p&gt;
&lt;p&gt;As we can see, everything runs properly. Thanks a lot for watching and see you next time.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;That was all that is necessary to get the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; up and running. For your convenience, here’s the whole source code of the HTML file:&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;!DOCTYPE html&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;html&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;head&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;!-- React Dependencies for the SDK UI --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;script src=&quot;js/vendor/react.production.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;script src=&quot;js/vendor/react-dom.production.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;!-- PhotoEditor SDK--&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;script src=&quot;js/PhotoEditorSDK.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;!-- PhotoEditor SDK UI --&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;script src=&quot;js/PhotoEditorSDK.UI.DesktopUI.min.js&quot;&gt;&amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;link rel=&quot;stylesheet&quot; href=&quot;css/PhotoEditorSDK.UI.DesktopUI.min.css&quot; /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;/head&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;body&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;div id=&quot;editor&quot;&gt;&amp;#x3C;/div&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      window.onload = function () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        var image = new Image()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        image.onload = function () {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            var container = document.getElementById(&apos;editor&apos;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            var editor = new PhotoEditorSDK.UI.DesktopUI({&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            container: container,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            // Please replace this with your license: https://www.photoeditorsdk.com/dashboard/subscriptions&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            license: &apos;{&quot;owner&quot;:&quot;Imgly Inc.&quot;,&quot;version&quot;:&quot;2.1&quot;, ...}&apos;,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            editor: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              image: image&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            },&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            assets: {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              // This should be the absolute path to your `assets` directory&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              baseUrl: &apos;/assets&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          })&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // image.crossOrigin = &apos;Anonymous&apos;  // Setup CORS accordingly if needed&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        image.src = &apos;./example.jpg&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    &amp;#x3C;/script&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;  &amp;#x3C;/body&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&amp;#x3C;/html&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-31.png" medium="image"/><category>JavaScript</category><category>HTML5</category><category>Web Development</category><category>Tutorial</category><category>Technology</category><category>Tech</category><category>How-To</category><category>Learning</category></item><item><title>Updates to the PhotoEditor SDK</title><link>https://img.ly/blog/updates-to-the-photoeditor-sdk-7df794757979/</link><guid isPermaLink="true">https://img.ly/blog/updates-to-the-photoeditor-sdk-7df794757979/</guid><description>Color Pipette, DuoTone Filters, Folders, Snapping, Light Theme</description><pubDate>Tue, 28 May 2019 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Over the course of the last weeks, we’ve integrated a couple of handy features into the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;. It’s now easier than ever for you to equip your service with the tools that make it the one-stop creative solution for your users.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;color-pipette&quot;&gt;Color Pipette&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 300px) 300px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;300&quot; height=&quot;636&quot; src=&quot;https://img.ly/_astro/1-GwN_5xBj2mqiOVnc8TZBiA_Zmv8Fh.webp&quot; srcset=&quot;/_astro/1-GwN_5xBj2mqiOVnc8TZBiA_Zmv8Fh.webp 300w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Colors are important for virtually every aspect of the digital world and a powerful tool when it comes to design, branding, social media and marketing. Color is one of the most important things to consider when communicating online. If used right these visual cues harmonize the impression and emphasize the message. But if used wrong, colors may also wreck design and content just as thoroughly as Comic Sans.&lt;/p&gt;
&lt;p&gt;Whether it is for creating content, ads, special offers or a brand logo, finding the right color is just too important a decision to be taken lightly. The PhotoEditor SDK’s color pipette helps your users to discover and marry their content with the right colors for any purpose.&lt;/p&gt;
&lt;p&gt;The Color Pipette is available for iOS and Android.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;duotone-filters&quot;&gt;DuoTone Filters&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 400px) 400px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;400&quot; height=&quot;500&quot; src=&quot;https://img.ly/_astro/1-n-7aDM2hWU8oEpJKzB0fsQ_Sk1AA.webp&quot; srcset=&quot;/_astro/1-n-7aDM2hWU8oEpJKzB0fsQ_Sk1AA.webp 400w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Duotone is amongst the big trends in modern web design. What once served as a way of saving money on printed materials, today, adds boldness to designs and can be used to many ends. Duotone keeps things minimalistic yet captivating. In a world of full-color imagery, duotone images are a refreshing novelty as they add visual appeal by subtracting colors.&lt;/p&gt;
&lt;p&gt;We added 8 filters to the PhotoEditor SDK’s gallery that map contrasting colors to an image based on its luminance values. Via a slider, your users can control which color the creative should lean to.&lt;/p&gt;
&lt;p&gt;DuoTone filters are available for iOS, Android, and HTML5.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;folders&quot;&gt;Folders&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 200px) 200px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;200&quot; height=&quot;400&quot; src=&quot;https://img.ly/_astro/1-iED1WxauYJPb5B2SrTFRlw_1aWfHm.webp&quot; srcset=&quot;/_astro/1-iED1WxauYJPb5B2SrTFRlw_1aWfHm.webp 200w&quot;&gt;&lt;/p&gt;
&lt;p&gt;To streamline your users’ workflow and facilitate the exploration of the PhotoEditor SDK’s vast filter library, we categorized them into 7 folders. We also exchanged all filter names for more descriptive ones.&lt;/p&gt;
&lt;p&gt;Folders are available for all platforms and completely customizable, you can rename the folders, add your own and rearrange the filters.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;snapping&quot;&gt;Snapping&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 400px) 400px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;400&quot; height=&quot;711&quot; src=&quot;https://img.ly/_astro/1-zQX5j0j67HMC3K-w16gRTQ_1ItsWj.webp&quot; srcset=&quot;/_astro/1-zQX5j0j67HMC3K-w16gRTQ_1ItsWj.webp 400w&quot;&gt;&lt;/p&gt;
&lt;p&gt;To facilitate the precise layout of creatives, we added a snapping feature to our Text, Text Design, and Sticker tool. The visual elements snap to the center and borders as well as to certain angles.&lt;/p&gt;
&lt;p&gt;You can customize the snapping properties to your wishes. Snapping is available for HTML5 iOS and Android.&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&quot;light-theme&quot;&gt;Light Theme&lt;/h3&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 400px) 400px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;400&quot; height=&quot;577&quot; src=&quot;https://img.ly/_astro/1-1L2FsQgLNJyP5YzlHL9zOQ_12lG5X.webp&quot; srcset=&quot;/_astro/1-1L2FsQgLNJyP5YzlHL9zOQ_12lG5X.webp 400w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Rumor has it that Apple is going to introduce light and dark theming in iOS 13. With our latest update, we complemented our standard dark themed UI with a light counterpart. Without any customization efforts, you can switch from dark to light theming with a single line of code.&lt;/p&gt;
&lt;p&gt;Light theme is available for iOS and Android. For more on that, please check out our documentation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;if-you-think-that-the-photoeditor-sdk-would-be-the-right-fit-for-your-project-let-us-know-and-well-be-intouch&quot;&gt;If you think that the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; would be the right fit for your project, let us know and we’ll be in touch.&lt;/h2&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/downloaded_images/Updates-to-the-PhotoEditor-SDK/1-6e8ra3u3F139pgLKSRMBEQ.png" medium="image"/><category>Design</category><category>Colors</category><category>Photo Editing</category><category>iOS</category><category>Android</category><category>Tech</category><category>How-To</category><category>Company</category></item><item><title>How to integrate a Photo Editor into your Android app</title><link>https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-android-app-ee4148816e25/</link><guid isPermaLink="true">https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-android-app-ee4148816e25/</guid><description>6-minute Video Tutorial </description><pubDate>Tue, 11 Dec 2018 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;As developer friendliness is paramount to us, we created a short video tutorial to guide you through our integration process. We created similar tutorials for &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-ios-app-ced008a7088b/&quot;&gt;iOS&lt;/a&gt; and &lt;a href=&quot;https://img.ly/blog/how-to-integrate-a-photo-editor-into-your-website-4578cc6ef6f3/&quot;&gt;HTML5&lt;/a&gt;, so make sure to check those out as well.(Please make sure to get a trial license for the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; before integrating it.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/embed/FpmASFvgUdM?feature=oembed&quot;&gt;https://www.youtube.com/embed/FpmASFvgUdM?feature=oembed&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;video-transcript&quot;&gt;Video Transcript&lt;/h3&gt;
&lt;p&gt;Today we’re going to show you how to integrate the PhotoEditor SDK into your Android app. We’re going to need Android Studio and the PhotoEditor SDK’s &lt;a href=&quot;https://img.ly/docs/pesdk/android/getting-started/integration/&quot;&gt;documentation&lt;/a&gt; to do so.&lt;/p&gt;
&lt;p&gt;First, we’re going to launch a new Android Studio project. Here, we can choose a name for our application. Then, we’re going to insert our company domain and our package name. Inserting a package name is very important as you need a license that is issued for your specific package name to run the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We’re also going to include Kotlin support, as every modern Android app should do that.&lt;/p&gt;
&lt;p&gt;We then choose Phone and Tablet and API 16 because this is the oldest API that the SDK currently supports. Please note, that this is eventually going to change.&lt;/p&gt;
&lt;p&gt;We then choose Empty Activity. Here you can set a name. For this tutorial, however, we’re going to leave it as it is.&lt;/p&gt;
&lt;p&gt;Now, a new Android Studio project is created.&lt;/p&gt;
&lt;p&gt;For the sake of clarity, we’re going to use the project view.&lt;/p&gt;
&lt;p&gt;First, we have to include the license. To do so, we open the &lt;code&gt;PhotoeditorApp&lt;/code&gt; folder and navigate through the subfolders &lt;code&gt;app&lt;/code&gt;, &lt;code&gt;src&lt;/code&gt; and &lt;code&gt;main&lt;/code&gt;. In this subfolder, we create yet another folder called &lt;code&gt;assets&lt;/code&gt;. We then simply paste our license into it.&lt;/p&gt;
&lt;p&gt;We head over to the documentation, find the section for Android and make sure that the latest version is selected. As of the time of this recording that is version 6 or V6. Then we navigate to the “Getting Started” section. Here you can also look up how to include the license. We head over to the project’s &lt;code&gt;build.gradle&lt;/code&gt; file and paste this line which is the path to our SDK repository under &lt;code&gt;buildscript&lt;/code&gt; and &lt;code&gt;repositories&lt;/code&gt;.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;maven { url &apos;https://artifactory.img.ly/artifactory/imgly&apos; }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We then copy this line and paste it under dependencies, and thus, we have linked the SDK.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;classpath &apos;ly.img.android.pesdk:plugin:6.0.8&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, we’re going to apply the PESDK plugin. So, we find the app’s build.gradle folder and paste this line under the other plugins.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;apply plugin: &apos;ly.img.android.pesdk&apos;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, we’re going to insert the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;’s configuration that contains all tools. We copy this block and paste it under the PESDK plugin. It is important that the license naming here matches the name of the license file we previously imported.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;pesdkConfig {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    licencePath &quot;LICENSE&quot; // Name of the Licence file in the asset folder&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // If you use another supportLibVersion (&apos;com.android.support&apos;), change this version here to update your own supportLibVersion&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    supportLibVersion &quot;27.1.1&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // Define the modules you need&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    modules {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Add all the backend modules you need&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:text&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:frame&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:focus&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:brush&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:camera&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:filter&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:sticker&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:overlay&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:adjustment&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:text-design&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.operation:abstract-sticker&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Add all the UI modules you need&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:core&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:text&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:focus&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:frame&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:brush&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:filter&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:camera&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:sticker&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:overlay&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:transform&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:adjustment&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.ui.mobile_ui:text-design&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Add the serializer if you want&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk:serializer&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Add asset packs if you want&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:font-basic&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:font-text-design&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:frame-basic&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:filter-basic&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:overlay-basic&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:sticker-shapes&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        include &apos;ly.img.android.pesdk.assets:sticker-emoticons&apos;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, we copy the &lt;code&gt;buildToolsVersion&lt;/code&gt; und paste it in the &lt;code&gt;android&lt;/code&gt; category. And for the app to compile in the correct Java version, we copy this code block and paste it at the end of the &lt;code&gt;android&lt;/code&gt; category.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;compileOptions {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        sourceCompatibility JavaVersion.VERSION_1_8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        targetCompatibility JavaVersion.VERSION_1_8&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We hit “Sync Now” to save our settings. That often takes a while, so we sped it up for you.&lt;/p&gt;
&lt;p&gt;We want to build a simple application that just consists of a single button that starts the photo editor. So first, we create a button. To do so, we navigate to the &lt;code&gt;app&lt;/code&gt; folder and open the subfolders &lt;code&gt;src&lt;/code&gt;, &lt;code&gt;res&lt;/code&gt; and &lt;code&gt;layout&lt;/code&gt; to find the &lt;code&gt;activity_main&lt;/code&gt; (or whichever way you decided to name it). We click on “Text” to edit the file and add a button. For height and width, we enter &lt;code&gt;wrap_content&lt;/code&gt;. Now, we set an ID for the button and call it &lt;code&gt;sdk_button&lt;/code&gt;. We then set a display text for the button. For this tutorial, we’ll use the string &lt;code&gt;app_name&lt;/code&gt;, but you, of course, can choose whichever string you like.&lt;/p&gt;
&lt;p&gt;We return to the &lt;code&gt;app&lt;/code&gt; folder and find the &lt;code&gt;MainActivity&lt;/code&gt; in the subfolders &lt;code&gt;src&lt;/code&gt; and &lt;code&gt;java&lt;/code&gt;. We head over to the documentation, where we are presented with two options. We can either start the editor in camera mode or in the device’s gallery. We’ll go with the camera mode. As we’re writing our &lt;code&gt;MainActivity&lt;/code&gt; in Kotlin, we choose the Kotlin code example and paste it in the &lt;code&gt;MainActivity&lt;/code&gt;. We can overwrite the &lt;code&gt;onCreate&lt;/code&gt; as it is also included in the code example.&lt;/p&gt;
&lt;pre class=&quot;astro-code github-dark&quot; tabindex=&quot;0&quot; data-language=&quot;plaintext&quot;&gt;&lt;code&gt;&lt;span class=&quot;line&quot;&gt;&lt;span&gt;companion object {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        const val PESDK_RESULT = 1&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // Important permission request for Android 6.0 and above, don&apos;t forget to add this!&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array&amp;#x3C;String&gt;, grantResults: IntArray) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        PermissionRequest.onRequestPermissionsResult(requestCode, permissions, grantResults)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        super.onRequestPermissionsResult(requestCode, permissions, grantResults)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    override fun permissionGranted() {}&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    override fun permissionDenied() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        /* TODO: The Permission was rejected by the user. The Editor was not opened,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;         * Show a hint to the user and try again. */&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    // Create an empty new SettingsList and apply the changes on this reference.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    private fun createPesdkSettingsList() = SettingsList().apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // If you include our asset packs and use our UI you also have to add them to the UI,&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // otherwise, they are only available for the backend&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // See the specific feature sections of our guides if you want to know how to add your own Assets.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(UiConfigFilter::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setFilterList(FilterPackBasic.getFilterPack())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(UiConfigText::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setFontList(FontPackBasic.getFontPack())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(UiConfigFrame::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setFrameList(FramePackBasic.getFramePack())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(UiConfigOverlay::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setOverlayList(OverlayPackBasic.getOverlayPack())&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(UiConfigSticker::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setStickerLists(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              StickerPackEmoticons.getStickerCategory(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;              StickerPackShapes.getStickerCategory()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            )&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Set custom camera image export settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(CameraSettings::class.java).apply {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setExportDir(Directory.DCIM, &quot;SomeFolderName&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setExportPrefix(&quot;camera_&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        // Set custom editor image export settings&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        getSettingsModel(EditorSaveSettings::class.java).apply{&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setExportDir(Directory.DCIM, &quot;SomeFolderName&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            setExportPrefix(&quot;result_&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            savePolicy = EditorSaveSettings.SavePolicy.RETURN_ALWAYS_ONLY_OUTPUT&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    override fun onCreate(savedInstanceState: Bundle?) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        super.onCreate(savedInstanceState)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        setContentView(R.layout.activity_main)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        openCamera()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    private fun openCamera() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        val settingsList = createPesdkSettingsList()&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        CameraPreviewBuilder(this)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          .setSettingsList(settingsList)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;          .startActivityForResult(this, PESDK_RESULT)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    override fun onActivityResult(requestCode: Int, resultCode: Int, data: android.content.Intent) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        super.onActivityResult(requestCode, resultCode, data)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        if (resultCode == Activity.RESULT_OK &amp;#x26;&amp;#x26; requestCode == PESDK_RESULT) { // Editor has saved an Image.&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            val resultURI = data.getParcelableExtra&amp;#x3C;Uri?&gt;(ImgLyIntent.RESULT_IMAGE_URI)?.also {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                // Scan result uri to show it up in the Gallery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).setData(it))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            val sourceURI = data.getParcelableExtra&amp;#x3C;Uri?&gt;(ImgLyIntent.SOURCE_IMAGE_URI)?.also {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                // Scan source uri to show it up in the Gallery&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE).setData(it))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            Log.i(&quot;PESDK&quot;, &quot;Source image is located here $sourceURI&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            Log.i(&quot;PESDK&quot;, &quot;Result image is located here $resultURI&quot;)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            // TODO: Do something with the result image&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            // OPTIONAL: read the latest state to save it as a serialisation&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            val lastState = data.getParcelableExtra&amp;#x3C;SettingsList&gt;(ImgLyIntent.SETTINGS_LIST)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            try {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                PESDKFileWriter(lastState).writeJson(File(&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  Environment.getExternalStorageDirectory(),&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                  &quot;serialisationReadyToReadWithPESDKFileReader.json&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;                ))&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            } catch (e: IOException) { e.printStackTrace() }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        } else if (resultCode == Activity.RESULT_CANCELED &amp;#x26;&amp;#x26; requestCode == PESDK_RESULT) {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            // Editor was canceled&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            val sourceURI = data.getParcelableExtra&amp;#x3C;Uri?&gt;(ImgLyIntent.SOURCE_IMAGE_URI)&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;            // TODO: Do something...&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;line&quot;&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Right now, we are presented with quite some error warnings, but that’s no problem at all because we still need to implement the interface, as you can see here: &lt;code&gt;PermissionRequest.Response&lt;/code&gt;. Here, we must choose the dedicated &lt;code&gt;ly.img.android.pesdk.ui.utils&lt;/code&gt; and add &lt;code&gt;.response&lt;/code&gt; at the end.&lt;/p&gt;
&lt;p&gt;After that, we’re down to only two errors because we still need to integrate the correct directory. Again, we choose the dedicated &lt;code&gt;ly.img.android.pesdk.backend.model.constant&lt;/code&gt;. And thus all errors are resolved.&lt;/p&gt;
&lt;p&gt;If we were to start the app now it would automatically run the editor in camera mode. But we don’t want the editor to start automatically, hence the button we previously added. So, in order to change that, we scroll to the onCreate method and as you can see here, the app would instantly open the camera.&lt;/p&gt;
&lt;p&gt;We create a new variable that we’re going to call &lt;code&gt;sdkButton&lt;/code&gt; and set it equal with &lt;code&gt;findViewbyId&lt;/code&gt;. We then set the ID to &lt;code&gt;sdk_button&lt;/code&gt;, set an &lt;code&gt;OnClickListener&lt;/code&gt; and paste &lt;code&gt;openCamera&lt;/code&gt; beneath it.&lt;/p&gt;
&lt;p&gt;And, we have a working little app that contains the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;. You could take a deeper dive into PhotoEditor SDK integration in other environments and frameworks in the official &lt;a href=&quot;https://img.ly/docs/pesdk/&quot;&gt;documentation&lt;/a&gt; put together by developers themselves.&lt;/p&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-33.png" medium="image"/><category>App Development</category><category>Android</category><category>Tutorial</category><category>Technology</category><category>Photo Editing</category><category>Tech</category><category>How-To</category><category>Learning</category></item><item><title>Text ❤ Design [Pt. II]</title><link>https://img.ly/blog/text-design-pt-ii-97ce7b752147/</link><guid isPermaLink="true">https://img.ly/blog/text-design-pt-ii-97ce7b752147/</guid><description>Let images do the talking </description><pubDate>Wed, 28 Nov 2018 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;After giving you a sneak peek at the Text Design tool in a previous &lt;a href=&quot;https://img.ly/blog/text-design-ef84fe708d02/&quot;&gt;blog post&lt;/a&gt;, we can now finally announce that it is available as a part of the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; for all platforms. Over the last weeks, we finalized the Text Design tool and added functionalities that make it a handy creative tool for many industries and use cases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of our main goals is to make good design more accessible to everyone by developing technology that facilitates and streamlines creative processes so that even people without previous knowledge of sophisticated editing tools can yield appealing results. The Text Design tool enables you to provide your users with the power and features necessary to give speech to their ideas and create a narrative for their visual communication.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 750px) 750px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;750&quot; height=&quot;370&quot; src=&quot;https://img.ly/_astro/1-ftHB1QK5wuwkHg8PRoSHHw_T8Eqv.webp&quot; srcset=&quot;/_astro/1-ftHB1QK5wuwkHg8PRoSHHw_1eqsdy.webp 640w, /_astro/1-ftHB1QK5wuwkHg8PRoSHHw_T8Eqv.webp 750w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Attention-grabbing and precise visual communication is key to engaging one’s target audience. Our novel tool automates typesetting and lets your users combine photos and text fast and easy to create stunning imagery for any tone and task. The Text Design tool features complex text layouts based on recipes crafted by professional designers. Their balanced combination of fonts, sizes, alignments, and decorations allow for the fast creation of assets with a designer look for various purposes like social media, online ads, short-term offers, flyers, product images, posters, promo material and so on. Especially for small companies and teams, without the budget for a professional designer or a dedicated design department, the Text Design Tool can save a lot of time and stress by reducing what would usually take hours to a single tap.&lt;/p&gt;
&lt;h2 id=&quot;all-it-takes-is-an-idea-the-text-design-tool-tends-to-90-of-the-execution&quot;&gt;All it takes is an idea. The Text Design Tool tends to 90% of the execution.&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 300px) 300px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;300&quot; height=&quot;634&quot; src=&quot;https://img.ly/_astro/1-RY7-Zm8SSkyjE4kBKygPnw_Z1f5tJI.webp&quot; srcset=&quot;/_astro/1-RY7-Zm8SSkyjE4kBKygPnw_Z1f5tJI.webp 300w&quot;&gt;&lt;/p&gt;
&lt;p&gt;The tool makes design just as fast as your users’ ideas. Combined with the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK’s&lt;/a&gt; extensive feature suite, branding opportunities through sticker upload and the photo roll with endless source material, your users can achieve a harmonious and nuanced visual communication off the bat to stand out against their competitors. The designs help convey your users’ message and can be used to create a textural hierarchy to guide the spectators view to the essential infos for your users’ goals. Furthermore, the shuffle functionality randomizes fonts, alignments, and decorations thus offering endless possibilities for creative expression.&lt;/p&gt;
&lt;p&gt;A recent change we made to the mobile versions of the Text Design tool is lifting the limitation of one design per creative to allow further artistic expression and get the most out of the interplay and combination of the various designs. On top of that, we optimized the inverting feature of the tool to allow for the adjustment of the inverted designs’ padding and size.&lt;/p&gt;
&lt;h2 id=&quot;if-you-want-to-empower-your-users-to-give-a-voice-to-their-creatives-head-over-to-imgly-and-get-in-touch-with-our-salesteam&quot;&gt;If you want to empower your users to give a voice to their creatives head over to &lt;a href=&quot;https://img.ly/&quot;&gt;IMG.LY&lt;/a&gt; and get in touch with our sales team.&lt;/h2&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/downloaded_images/Text---Design--Pt--II-/1-a-fU1Z1hZwEV1xctiTudcA.png" medium="image"/><category>Design</category><category>Typography</category><category>Android</category><category>iOS</category><category>App Development</category><category>Web Development</category><category>Insights</category></item><item><title>Elbi transforms creative user engagement to help people worldwide</title><link>https://img.ly/blog/elbi-transforms-creative-user-engagement-to-help-people-worldwide-ec7e46b082ed/</link><guid isPermaLink="true">https://img.ly/blog/elbi-transforms-creative-user-engagement-to-help-people-worldwide-ec7e46b082ed/</guid><description>A Charity app for content creation and micro-donations</description><pubDate>Wed, 24 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Elbi Digital:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Founded 2014&lt;/li&gt;
&lt;li&gt;Based in the UK&lt;/li&gt;
&lt;li&gt;Social enterprise that helps people to connect with charity organizations and do good with micro-donations and content creation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A robust hybrid image editing solution at the core of the app for easy content creation&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Results:&lt;/strong&gt; Easy and seamless content creation with Photos, Doodles, and motivational messages&lt;/p&gt;
&lt;p&gt;The &lt;em&gt;Elbi&lt;/em&gt; app aims to connect people with charity organizations and beneficiaries alike and facilitate the social engagement and donation process. Users can support charity organizations via a “Love Button” with micro-donations and get creative for selected good causes. If users don’t donate directly, they can help fundraise money with their content. To enable their users to produce motivating and exceptional content, &lt;em&gt;Elbi&lt;/em&gt; had to provide them with a powerful creative tool. “Our app has photo-editing at the very core of its experience and the editor has been invaluable in making that vision happen. There are no other tools on the market up to the quality of &lt;a href=&quot;https://img.ly/products/photo-sdk&quot;&gt;PhotoEditor SDK&lt;/a&gt;, so it was an easy choice to have it be at the heart of &lt;em&gt;Elbi&lt;/em&gt;,” says Toby Green former lead developer at &lt;em&gt;Elbi&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For the previous version of the &lt;em&gt;Elbi&lt;/em&gt; app, the team built their own creative tool that worked with iOS only. When they decided to reforge their app, the team at &lt;em&gt;Elbi&lt;/em&gt; wanted to follow a different approach. “When we rebuilt the app we wanted it to be a hybrid solution and not only iOS like the previous one, so we abandoned our existing solution and were looking for an existing library. I spent a lot of time researching photo editing tools and did a feasibility study on all the available editors and PhotoEditor SDK came top of the list” says Toby Green.&lt;/p&gt;
&lt;p&gt;With the PhotoEditor SDK the developers at &lt;em&gt;Elbi&lt;/em&gt; were able to swiftly rebuild their app “We would never have been able to do this so quickly without the editor” says Green, “the documentation was great so it was very easy to get it all up and running and the support was incredibly patient and helpful. They always responded quickly and were happy to spend time resolving even difficult-to-track-down issues”. The SDK seamlessly integrates into the app providing an intuitive solution for &lt;em&gt;Elbi&lt;/em&gt;’s content creation section. “It really looks like it’s part of the product,” says Toby Green.&lt;/p&gt;
&lt;p&gt;“The product is a 10/10; it is the best hybrid tool available. And in general, I would say one of the finest teams I’ve ever worked with; they’ve been very supportive with regards to custom support, adding functionalities and discussing integration and they helped us getting everything working 100%,” concludes Toby Green. With the PhotoEditor SDK &lt;em&gt;Elbi&lt;/em&gt; facilitates the charitable engagement of its users and helps people all around the globe to do good on the go.&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><category>Photography</category><category>Social Media</category><category>Charity</category><category>Case Study</category><category>Case Studies</category></item><item><title>Infopark reinvents CMS asset management with the PhotoEditor SDK</title><link>https://img.ly/blog/infopark-reinvents-cms-asset-management-with-the-photoeditor-sdk-eb026e6864fe/</link><guid isPermaLink="true">https://img.ly/blog/infopark-reinvents-cms-asset-management-with-the-photoeditor-sdk-eb026e6864fe/</guid><description>Scrivito: A Native Cloud CMS built with Ruby on Rails </description><pubDate>Wed, 24 Oct 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;Infopark:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Founded 1994&lt;/li&gt;
&lt;li&gt;Based in Berlin, Germany&lt;/li&gt;
&lt;li&gt;SaaS provider for website infrastructure technologies (CMS, CRM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; A simple and intuitive photo editing solution to provide their clients with seamless and easy asset management&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Results:&lt;/strong&gt; A versatile image editor within &lt;em&gt;Scrivito’s&lt;/em&gt; Content Browser&lt;/p&gt;
&lt;p&gt;The native cloud service &lt;em&gt;Scrivito&lt;/em&gt; is tailored to meet the requirements of editors worldwide and provides a clean and simple What-you-see-is-what-you-get, drag &amp;#x26; drop interface that enables its users to change their websites and content on the fly; eliminating complex tree hierarchies and all the guesswork that goes along with it. Since successful websites hinge on high-quality pictures, Infopark wanted to equip its users with a robust image editing solution. “We wanted to provide our users with a coherent and easy-to-use working environment, and because most editors don’t have Photoshop or a proper skillset for other sophisticated programs, we were searching for a solution that would enable our users to quickly and professionally edit their images within &lt;em&gt;Scrivito&lt;/em&gt;” says Thomas Witt, co-founder and Director of Product &amp;#x26; Business Development at Infopark.&lt;/p&gt;
&lt;p&gt;Before integrating the PhotoEditor SDK into their award-winning service &lt;em&gt;Scrivito&lt;/em&gt;, Infopark tried to tackle the problem themselves with a simple, self-made solution based on ImageMagick. The editor could perform operations such as rotate, crop or flip “but that solution didn’t have an appealing UI, nor was it easy to use” says Thomas Witt. “After evaluating some solutions, we felt that the PhotoEditor SDK would be a good match because it is the easiest to use for both developers and users and also has a nice UI that doesn’t look cluttered.”&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 800px) 800px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;800&quot; height=&quot;395&quot; src=&quot;https://img.ly/_astro/0-twdBvfCaQIwyYWf4_Z1FivKm.webp&quot; srcset=&quot;/_astro/0-twdBvfCaQIwyYWf4_ZfMBAM.webp 640w, /_astro/0-twdBvfCaQIwyYWf4_Z24qT6L.webp 750w, /_astro/0-twdBvfCaQIwyYWf4_Z1FivKm.webp 800w&quot;&gt;&lt;/p&gt;
&lt;p&gt;With the SDK the developers at Infopark accomplished in days what would’ve otherwise taken weeks. “Our developers loved that the integration was really straightforward and that everything you need like APIs and documentation is easy to find and of very good quality. And when we had questions, the support team responded very quickly and extensively” says Witt. With the PhotoEditor SDK Infopark provides their customers with a native image editing solution that seamlessly integrates into &lt;em&gt;Scrivito’s&lt;/em&gt; content browser and further facilitates the creation of websites and content. “Asset management is critical to our users, and we get a lot of positive feedback for our solution,” says Thomas Witt.&lt;/p&gt;
&lt;p&gt;“&lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;The PhotoEditor SDK&lt;/a&gt; is a great product, it does exactly what it’s supposed to do, and we never encountered any difficulties. It even provides more functionalities than our customers would ever use. The support was very fast and helpful, and the documentation is extensive and comprehensible” concludes Witt. With the PhotoEditor SDK &lt;em&gt;Scrivito&lt;/em&gt; allows for an intuitive and straightforward approach to both content and website creation. Unlike other CMS &lt;em&gt;Scrivito&lt;/em&gt; now enables its users to creatively experiment with their website assets and make impromptu decisions for their design.&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-44.png" medium="image"/><category>Web Development</category><category>Case Study</category><category>CMS</category><category>Website</category><category>Cloud</category><category>Case Studies</category></item><item><title>Case Study: W | Bear &amp; PhotoEditor SDK</title><link>https://img.ly/blog/case-study-w-bear-photoeditor-sdk-10f06eb8cb14/</link><guid isPermaLink="true">https://img.ly/blog/case-study-w-bear-photoeditor-sdk-10f06eb8cb14/</guid><description>Building a social environment for the LGBT community</description><pubDate>Mon, 17 Sep 2018 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://wbear.lgbt/?utm_source=Case%20Study%20PhotoEditor%20SDK&quot;&gt;W | Bear&lt;/a&gt; is the first global photo and video blogging social community for gay men. The free app allows its users to post pictures and videos to a personal feed, express their creativity and connect with like-minded bears. The blogging community provides a safe place where people can build and shape a social environment, chat, flirt and date. W | Bear was created and developed by the private and public cloud solution provider gNetLabs. We sat together with Xavier Nicolle, CEO at gNetLabs to talk about the vision behind W | Bear, time to market and providing users with tailored assets to amplify engagement.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“W | Bear is aimed at the bear subculture of the LGBT community. People express themselves, their story and their life through photos and videos. Our users are very happy with the app. 18 months after the release we reached around 150.000 users worldwide, which is beyond our expectation and it’s getting faster and faster. We get a lot of positive reactions and amazing feedback from users that tell us, that our application helped them to gain more self-esteem and to better integrate into the community,” Xavier Nicolle says.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 300px) 300px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;300&quot; height=&quot;533&quot; src=&quot;https://img.ly/_astro/1-vQ6biYxXWoVjVrO12DT4iA_Z2rduG2.webp&quot; srcset=&quot;/_astro/1-vQ6biYxXWoVjVrO12DT4iA_Z2rduG2.webp 300w&quot;&gt;&lt;/p&gt;
&lt;p&gt;As pictures were going to be a vital part of the Instagram like photo blogging application (to this day, more than 2 million pictures and videos have been posted on the app), the folks at gNetLabs started exploring options as their CEO explains: “Time to market was critical for us, and we were kind of in a rush to develop the app. From our background as a hosting company, we’d usually develop and host everything ourselves, however, due to time problems, that wasn’t a viable option regarding the photo editing functionalities. So, we jumped into &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; to save time, really liked it and eventually kept it. The features and pricing perfectly fit our needs, the integration was straightforward, and the SDK is of great quality and open enough for fine-tuning. On top of that, unlike Adobe Creative SDK for example, it is not linked to any other service. And that is exactly what we were looking for, a piece of software that we could simply plug in that isn’t linked to a service that we don’t need.”&lt;/p&gt;
&lt;p&gt;To offer the best experience possible with &lt;a href=&quot;https://www.wbear.lgbt/?utm_source=Case%20Study%20PhotoEditor%20SDK&quot;&gt;W | Bear&lt;/a&gt;, the folks at gNetLabs pay close attention to how people engage with the app and its features. “Our users mostly work with stickers, frames, and overlays when editing their pictures,” Xavier Nicolle says, “so, bearing that in mind, we want to provide more content and assets that are tailored for the community so our users will hopefully make more use of the editor. Currently, we’re working together with artists that develop stickers that we’re going to introduce using the SDK.”&lt;/p&gt;
&lt;p&gt;But it doesn’t stop with W | Bear, as Xavier Nicolle describes the vision behind the community: “W | Bear is the first piece of a larger social network we want to develop that is dedicated and aimed at the whole LGBT community. We’re going to release more applications using the same technology as W | Bear to address more subcultures. On top of that, there are going to be corresponding websites for each app, so the user will be able to find the same functionalities and tools across all platforms.”&lt;/p&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-34.png" medium="image"/><category>Photography</category><category>Social Media</category><category>LGBTQ</category><category>Case Study</category><category>Mobile App Development</category><category>Case Studies</category></item><item><title>Case Study: Dirico &amp; PhotoEditor SDK</title><link>https://img.ly/blog/case-study-dirico-photoeditor-sdk-bf306f04f34d/</link><guid isPermaLink="true">https://img.ly/blog/case-study-dirico-photoeditor-sdk-bf306f04f34d/</guid><description>On orchestrating social media and content marketing </description><pubDate>Wed, 04 Jul 2018 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://dirico.io/&quot;&gt;dirico.io&lt;/a&gt; is a piece of software that unifies the social media and content marketing workflow from research and planning over creation to publishing. In doing that, dirico.io helps marketing teams to better organize and ensures a perfectly orchestrated communication at all times. We sat together with Marcus Burk, Head of Marketing at dirico.io, to discuss how they use the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; to provide their users with seamlessly integrated photo editing and branding features.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“With dirico.io, we follow an all in one approach,” says Marcus Burk, “that means that our tool covers the complete workflow starting with the inspiration for content ideas, over planning, creation, and scheduling to publishing. And just as text is vital to content, images like infographics or pictures for social media are also an incredibly important medium. So, we’ve been looking for a solution that basically could substitute Photoshop in many ways. I’m very happy that we are using the PhotoEditor SDK, it is a great and innovative product. One can see the development that img.ly made as well as the advancement of the SDK over the last years. I believe that it is one of the easiest to use and most powerful editors on the market and the integration possibilities into our solution are awesome.”&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 1000px) 1000px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;1000&quot; height=&quot;494&quot; src=&quot;https://img.ly/_astro/1-az4mEYK9y0TzpJjNXslYCg_Z12W9Gx.webp&quot; srcset=&quot;/_astro/1-az4mEYK9y0TzpJjNXslYCg_Z1oDWY5.webp 640w, /_astro/1-az4mEYK9y0TzpJjNXslYCg_2gmIAW.webp 750w, /_astro/1-az4mEYK9y0TzpJjNXslYCg_Z2vkzzj.webp 828w, /_astro/1-az4mEYK9y0TzpJjNXslYCg_Z12W9Gx.webp 1000w&quot;&gt;&lt;/p&gt;
&lt;p&gt;The users of dirico.io mostly work with the editor for social media images. Here, a few features and tools of the SDK come in quite handy as Marcus Burk explains: “The fact that you can import and save assets like for example a company logo with a transparent background is a great feature for branding on social media. We recently enabled the photo roll tool of the SDK so the user can choose pictures from a stock library and then edit them in the editor. So, now it’s possible to create completely new content right off the bat. You’d just have to choose an image from the stock library, edit it and then apply your logo to it. Our users are really excited about that feature once they realize how easy it is and look forward to saving time.”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; is a great and helpful tool to adjust pictures directly in the browser.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;247GRAD started out as a social media marketing agency. To facilitate their daily routines, they created the Facebook CMS TABMAKER in 2011. Later in coordination with the social media departments of their clients they created 247GRAD CONNECT (formerly PUBLISHER) for in-house use. To tackle the challenges of content marketing, they then expanded the functionalities of their tool and introduced it to the public. 247GRAD CONNECT evolved into dirico.io, a full-fledged social media and content marketing solution for agencies and enterprises of every size. To create this feature-rich experience the developers at 247GRAD Labs had to rely on robust, well-documented software with hassle-free integration, such as the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; as Marcus Burk explains: “Our developers told me that they love the fact that everything is well documented and that there are example integrations for various frameworks. And regarding support, we’re happy that we have people that we can directly talk to and that are motivated to work together when there are any issues or questions.”&lt;/p&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/downloaded_images/Case-Study--Dirico---PhotoEditor-SDK/1-o-xI9IHwokiYplX9nUmyzA.png" medium="image"/><category>Content Marketing</category><category>Case Study</category><category>Social Media</category><category>Marketing</category><category>Communication</category><category>Case Studies</category></item><item><title>Text ❤ Design</title><link>https://img.ly/blog/text-design-ef84fe708d02/</link><guid isPermaLink="true">https://img.ly/blog/text-design-ef84fe708d02/</guid><description>Introducing the Text Design Tool </description><pubDate>Thu, 12 Apr 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2500px) 2500px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2500&quot; height=&quot;900&quot; src=&quot;https://img.ly/_astro/1-K3lFT5eIyK_UxXyudh88MA_ZCByzT.webp&quot; srcset=&quot;/_astro/1-K3lFT5eIyK_UxXyudh88MA_1McfOi.webp 640w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_Z8MjGX.webp 750w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_fHXSv.webp 828w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_Z1OTTtC.webp 1080w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_1z40CH.webp 1280w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_zBrfg.webp 1668w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_1tUw9H.webp 2048w, /_astro/1-K3lFT5eIyK_UxXyudh88MA_ZCByzT.webp 2500w&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;introducing-the-text-designtool&quot;&gt;Introducing the Text Design Tool&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;There is power in words just as there is in design. In another advance in making good design more accessible to everyone, today, we are proud to give you a sneak peek at an upcoming product we created in addition to the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;: The Text Design Tool merges input text with typography, creating stunning designs for a multitude of use-cases.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 270px) 270px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;270&quot; height=&quot;480&quot; src=&quot;https://img.ly/_astro/1-zrRqqw0uZiXg450dHHjTrA_Z22VKDc.webp&quot; srcset=&quot;/_astro/1-zrRqqw0uZiXg450dHHjTrA_Z22VKDc.webp 270w&quot;&gt;&lt;/p&gt;
&lt;p&gt;While most of us are accustomed to the use of photo editing and enhancement tools, results often lack the desired appeal when it comes to typography and layout. Simply because most people don’t know about character or line spacing and other rules of typesetting and let’s be honest, why should they? But as well-designed text layout can add a lot to its expressiveness, we wanted to equip everyone with a tool that automates typesetting and layout, similar to apps like Typorama.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 270px) 270px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;270&quot; height=&quot;585&quot; src=&quot;https://img.ly/_astro/1-Q6iCuQaFeMe-UrUOCr7u9w_Z2bDYnF.webp&quot; srcset=&quot;/_astro/1-Q6iCuQaFeMe-UrUOCr7u9w_Z2bDYnF.webp 270w&quot;&gt;&lt;/p&gt;
&lt;p&gt;To transform our vision into a user-friendly tool, we first created recipes and set layout rules for different combinations of fonts with decoration elements. The Text Design Tool currently holds 16 layout designs for various use-cases. We worked close with the designers Tommi Gutscher and Ramona Schratt to conceptualize the designs and their different flavors. Through simple keyboard entries, you can populate the designs with your own words. The tool then lays out your text according to our recipes upon a single tap. You can then fine-tune your creative by choosing from 15 different text colors or by using the randomize functionality that shuffles the fonts, alignments and decorations until the creative lives up to your vision. You can even create a mask from your text that lets the background image shine through.&lt;/p&gt;
&lt;p&gt;But that is not the end of the road, as, for the future, we will work with a wide range of artists and designers to expand our tool with a broad spectrum of new and exciting designs that can be applied to a variety of use-cases.&lt;/p&gt;
&lt;p&gt;The Text Design Tool is currently available for iOS only. Versions for Android and HTML5 are going to be released in the next weeks.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Download our &lt;a href=&quot;https://apps.apple.com/de/app/imgly-photo-editor-camera/id589839231?l=en&quot;&gt;Photo Editor App&lt;/a&gt; for iOS to get a hands-on experience with the Text Design Tool.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;*&lt;strong&gt;*Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.**&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-36.png" medium="image"/><category>Design</category><category>Typography</category><category>iOS</category><category>Creativity</category><category>App Development</category><category>Insights</category></item><item><title>Case Study: Zefiro &amp; PhotoEditor SDK</title><link>https://img.ly/blog/case-study-zefiro-photoeditor-sdk-1ff4f76ce9ae/</link><guid isPermaLink="true">https://img.ly/blog/case-study-zefiro-photoeditor-sdk-1ff4f76ce9ae/</guid><description>On reinventing user engagement and creativity in the personal cloud space </description><pubDate>Fri, 09 Mar 2018 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Funambol is the leading provider of white-label personal cloud solutions that empower mobile operators worldwide to provide their customers with cloud storage in their packages. With their latest app &lt;a href=&quot;https://zefiro.me/landing/&quot;&gt;Zefiro&lt;/a&gt;, Funambol recently launched a branded version of their core product to address the consumers directly. We sat together with Stefano Fornari, CTO and Co-Founder of Funambol, to talk about Zefiro, user engagement and switching from an established vendor’s photo editing solution to the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The personal cloud app Zefiro offers infinite cloud space and provides sharing, collaboration, and search functionalities as well as a functionality that automatically frees up space from the user’s phone by cleaning up items that were already saved to the cloud. But instead of just providing a haven for pictures and personal data, Zefiro offers several creative tools that enable its users to modify and enhance their images or create montages and little movies. For the first-mentioned, Funambol leverages the toolset of the PhotoEditor SDK.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The SDK is a great way to keep the users engaged and let them enjoy the content they like the most, which is their pictures.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 327px) 327px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;327&quot; height=&quot;541&quot; src=&quot;https://img.ly/_astro/1-30jabdEa3RKrkiUHG95A9Q_KvPoM.webp&quot; srcset=&quot;/_astro/1-30jabdEa3RKrkiUHG95A9Q_KvPoM.webp 327w&quot;&gt;&lt;/p&gt;
&lt;p&gt;“It’s important for us that the people feel comfortable with the app which must not only be easy, but also pleasant to use,” Stefano Fornari explains, “people want to do something with their pictures, so it’s important for us to give them ways to show, share and modify them to engage them to exploit the best value provided by our service. Our users are not photo professionals, so we need to provide very accessible and easy to use functionalities. The SDK is a great way to keep the users engaged and let them enjoy the content they are most attached to, which is their pictures.”&lt;/p&gt;
&lt;p&gt;“Before the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;, we were using another solution that was good enough, but not fully convincing,” Fornari says, “however, last year the vendor of the solution we were using discontinued the support for their SDK. We started searching for alternatives, and that’s when we found the PhotoEditor. One thing that we like, which is different from the former solution, is the fact that we can change things inside the SDK and upload custom assets. For example, for Christmas, we were exploring the possibility to incorporate Christmas frames. Also, we like the white label approach as well as the redesigned SDK which is much easier to use and is also much richer in terms of functionalities.”&lt;/p&gt;
&lt;p&gt;“From a developer’s perspective,” Stefano Fornari continues, “the most powerful feature of the PhotoEditor is the integration process. It was completely flawless, quick, and easy to integrate. It’s pretty clear that the SDK was designed with a developer as a customer approach. Same goes for the customizability as localization, and the upload of custom images are just a matter of a few lines of code. This is very important for a vendor like Funambol.”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“Only our imagination can put a limit on the features of the app.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“Only our imagination can put a limit on the features we will add to our product and Zefiro,” Fornari explains. “For example, we are actively exploring how to connect the service to IOT devices. Imagine that you could display your family pictures on your refrigerator or in your car. Also, we want to become more intelligent with the data. Think about bills that you could upload to the cloud that would be automatically sorted by an algorithm because A.I. collects, recognizes and categorizes them,” Stefano Fornari concludes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our&lt;/strong&gt; &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;&lt;strong&gt;Newsletter&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-37.png" medium="image"/><category>Cloud Computing</category><category>Photo Editing</category><category>Photos</category><category>Case Study</category><category>App Development</category><category>Case Studies</category></item><item><title>The IMG.LY Photo Roll</title><link>https://img.ly/blog/the-img-ly-photo-roll-b91f51dcae29/</link><guid isPermaLink="true">https://img.ly/blog/the-img-ly-photo-roll-b91f51dcae29/</guid><description>On giving back to the community </description><pubDate>Thu, 21 Sep 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;After today, we at &lt;a href=&quot;https://img.ly/&quot;&gt;IMG.LY&lt;/a&gt; are going to divert some of our energy to a new endeavour, the img.ly Photo Roll. We feel deeply rooted in the open-source movement and we know that the internet and most of the tools that we use today wouldn’t be nearly the same if it wasn’t for the awesome and creative work of countless people that shared their assets for free. Still today we heavily rely on open-source technology and creative work to give us guidance and inspire us to create new and unseen things.&lt;/p&gt;
&lt;p&gt;Working on our product &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; for the last two years gave us a lot of useful and valuable insights about photography and the various possibilities to create exceptional visual content. As some of us are enthusiastic photographers, it only seems logical to join the community of photographers and creative folks that enrich the internet with extraordinary and free content every single day. Since we have always gratefully used the work of other people, we would like to give something back to the community. Therefore, we are going to start sharing pictures we took around the globe via our &lt;a href=&quot;https://unsplash.com/@imgly/&quot;&gt;Unsplash&lt;/a&gt; and &lt;a href=&quot;https://www.instagram.com/img.ly/&quot;&gt;Instagram&lt;/a&gt; account. Please feel free to download, use, modify and share them at your will. The photos that we’re going to post over the following weeks and months will also be available in our photo roll that ships with the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We certainly hope that you’re going to make use of them. And we’d be happy to hear from you what you created with our pictures, and we’d love to see them in a new guise. After all, their real value only shows if someone is inspired by and can get creative with them.&lt;/p&gt;
&lt;p&gt;Thanks to all the people that contribute to our initiative: &lt;a href=&quot;https://www.instagram.com/buhmi/&quot;&gt;Malte Baumann&lt;/a&gt;, &lt;a href=&quot;http://www.tommi-gutscher.de/&quot;&gt;Tommi Gutscher&lt;/a&gt;, &lt;a href=&quot;https://www.instagram.com/mr.salkin/&quot;&gt;Niklas Priddat&lt;/a&gt;, &lt;a href=&quot;https://www.instagram.com/selcukcems/&quot;&gt;Cem Selcuk&lt;/a&gt; and &lt;a href=&quot;https://www.instagram.com/backslashtwentyone/&quot;&gt;Eray Basar&lt;/a&gt;. Below we have already compiled a few pictures that we are going to post over the next few days. Stay tuned.&lt;/p&gt;
&lt;p&gt;Cheers!&lt;br&gt;
Your friends at &lt;a href=&quot;https://img.ly/&quot;&gt;IMG.LY&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Photo by Malte Baumann&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 600px) 600px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;600&quot; height=&quot;400&quot; src=&quot;https://img.ly/_astro/1-yrbhu_3plpF5nz9_7OVlZA_7QKvd.webp&quot; srcset=&quot;/_astro/1-yrbhu_3plpF5nz9_7OVlZA_7QKvd.webp 600w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/5456/1*HyHOCppZgqQiJLysOr47CQ.jpeg&quot; alt=&quot;Photo by Niklas Priddat&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Photo by Eray Basar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 600px) 600px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;600&quot; height=&quot;900&quot; src=&quot;https://img.ly/_astro/1-RSwiOtWt05pPOcokaU_UjQ_1ibeje.webp&quot; srcset=&quot;/_astro/1-RSwiOtWt05pPOcokaU_UjQ_1ibeje.webp 600w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://miro.medium.com/max/2000/1*VT3hhr9G51rxqf7Y2hH_vw.jpeg&quot; alt=&quot;Photo by Malte Baumann&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Photo by Cem Selcuk&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 800px) 800px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;800&quot; height=&quot;458&quot; src=&quot;https://img.ly/_astro/1-txps3Dfjb-UjLelCwqxbFQ_Zv4TiX.webp&quot; srcset=&quot;/_astro/1-txps3Dfjb-UjLelCwqxbFQ_29d9ig.webp 640w, /_astro/1-txps3Dfjb-UjLelCwqxbFQ_1H6C8z.webp 750w, /_astro/1-txps3Dfjb-UjLelCwqxbFQ_Zv4TiX.webp 800w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;Photo by Eray Basar&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 800px) 800px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;800&quot; height=&quot;600&quot; src=&quot;https://img.ly/_astro/1-sWiXrX5jLgeOcgvvRH9lIQ_Z1t84pM.webp&quot; srcset=&quot;/_astro/1-sWiXrX5jLgeOcgvvRH9lIQ_4CaSb.webp 640w, /_astro/1-sWiXrX5jLgeOcgvvRH9lIQ_ZFUc6G.webp 750w, /_astro/1-sWiXrX5jLgeOcgvvRH9lIQ_Z1t84pM.webp 800w&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/downloaded_images/The-img-ly-Photo-Roll/1-D_wGv2cXlMJnLp-SfrreNg.png" medium="image"/><category>Instagram</category><category>Unsplash</category><category>Photography</category><category>Stock Photos</category><category>Creativity</category><category>Company</category></item><item><title>Case Study: Vapiano &amp; PhotoEditor SDK</title><link>https://img.ly/blog/case-study-vapiano-photoeditor-sdk-7f335ecc6ac7/</link><guid isPermaLink="true">https://img.ly/blog/case-study-vapiano-photoeditor-sdk-7f335ecc6ac7/</guid><description>Restaurant experience gone App </description><pubDate>Thu, 24 Aug 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The German casual dining restaurant chain &lt;a href=&quot;https://vapiano.com/&quot;&gt;Vapiano&lt;/a&gt; facilitates and streamlines their customer’s visits with a feature-rich app that lets its users: check in at the restaurant, order beverages and desserts from their seat, pay after their visit, collect loyalty points, browse the menu, save favorite dishes, locate the nearest subsidiary and even create images for social media postings.&lt;/p&gt;
&lt;p&gt;With 180 restaurants in 31 countries, Vapiano is one of the biggest fast-casual dining chains around. Especially at lunchtime and early evening hours each restaurant wines and dines plenty of hungry customers, with Vapiano’s current approach (ordering at the counter, receiving the meal, finding a table and after that checking out on a regular register) that sometimes resulted in long lines and consequently frustration among their guests. With the Vapiano app, that is a thing of the past as the visit can almost solely be handled by the app from check-in to check-out. As Vapiano’s target audience is very photography and social media affine, their app holds another gem for their users to play around with. When taking a picture of themselves and their food in a Vapiano restaurant, the users can directly add Vapiano stickers to their pictures and then post them online. Said feature was realized by &lt;a href=&quot;https://mobilabsolutions.com/&quot;&gt;MobiLab Solutions&lt;/a&gt; utilizing the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;. We sat down with Max Afflerbach and Robert Rabe of MobiLab Solutions GmbH to talk about their experiences with PhotoEditor SDK.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 800px) 800px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;800&quot; height=&quot;686&quot; src=&quot;https://img.ly/_astro/1-lH2pCjVBFT4HH2MKY6yF3Q_1LBv8g.webp&quot; srcset=&quot;/_astro/1-lH2pCjVBFT4HH2MKY6yF3Q_Z1p42nx.webp 640w, /_astro/1-lH2pCjVBFT4HH2MKY6yF3Q_LL6J.webp 750w, /_astro/1-lH2pCjVBFT4HH2MKY6yF3Q_1LBv8g.webp 800w&quot;&gt;&lt;/p&gt;
&lt;p&gt;“Vapiano’s vision regarding the photo feature is to spread their brand, enhance brand recognition and broaden the brand’s visibility,” Max Afflerbach, Chief Customer Officer at MobiLab Solutions explains. “Basically, they wanted to provide their guests with a tool that facilitates what they’re already doing when dining at Vapiano, that is taking pictures of their food and then uploading them to Snapchat, Instagram, Facebook, you name it. And so, we came up with a built-in branding feature that uses custom stickers.”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“…on StackOverflow or Quora, &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; is listed and praised as the only real alternative to Aviary”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;As they were on a schedule and didn’t have the time to develop the feature themselves the folks at MobiLab started searching for a third-party solution. “We’ve been looking for an SDK that does exactly what we imagined the feature to be capable of, namely taking a picture, adding assets and then exporting it,” says Robert Rabe, iOS developer at MobiLab Solutions. “We first considered Adobe Creative SDK because it is the best-known SDK in that field. However, it lacked a crucial feature for us that PhotoEditor SDK luckily has and that is the possibility to upload custom stickers,” says Max Afflerbach. “Also,” Rabe adds, “we weren’t 100% sure whether this whole thing would work without the user having to log into the Adobe Cloud.” “When you’re searching for other image processing SDKs on StackOverflow or Quora, PhotoEditor SDK is listed and praised as the only real alternative to Aviary. And besides, there aren’t exactly a lot of SDKs out there that cover both iOS and Android. So, that wasn’t a tough decision at all,” Afflerbach explains.&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 800px) 800px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;800&quot; height=&quot;686&quot; src=&quot;https://img.ly/_astro/1-ReYFlxaZFXGtSClTwKYlRw_Z2bRyNU.webp&quot; srcset=&quot;/_astro/1-ReYFlxaZFXGtSClTwKYlRw_ZilXvM.webp 640w, /_astro/1-ReYFlxaZFXGtSClTwKYlRw_17tOXu.webp 750w, /_astro/1-ReYFlxaZFXGtSClTwKYlRw_Z2bRyNU.webp 800w&quot;&gt;&lt;/p&gt;
&lt;p&gt;From the initial decision to work with PhotoEditor SDK until the feature was finished and ready for rollout, only a short period passed as Rabe explains: “Working with the SDK is really straightforward. The implementation is fast, and it’s all well documented. The SDK is a powerful tool and holds a lot of features with a great many possibilities. Setting up the feature exactly as we wanted it to be didn’t take longer than three working days tops. And if we had any issues or questions, we had no problems whatsoever getting in touch with the folks at PhotoEditor SDK which is really nice.”&lt;/p&gt;
&lt;p&gt;“I really like the product, it’s working very well, and especially the communication with the PhotoEditor SDK team was highly pleasant,” Robert Rabe concludes. “Working together with the team of &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; was super easygoing, the few requests and inquiries we had were answered quickly, and the technical licensing was a cinch as well. We are delighted with the product, the integration was very simple, and our developers are happy, I guess you couldn’t ask for more from an agency’s perspective,” Max Afflerbach adds.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-41.png" medium="image"/><category>Android App Development</category><category>iOS App Development</category><category>Social Media</category><category>Mobile Photography</category><category>Case Study</category><category>Case Studies</category></item><item><title>The Photograph that Will Not Vanish.</title><link>https://img.ly/blog/the-photograph-that-will-not-vanish-2a9960b6bf4a/</link><guid isPermaLink="true">https://img.ly/blog/the-photograph-that-will-not-vanish-2a9960b6bf4a/</guid><description>Why HP teamed up with us to create memories that will last a lifetime </description><pubDate>Mon, 22 May 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;em&gt;The &lt;a href=&quot;https://www.hp.com/us-en/shop/pdp/hp-sprocket-photo-printer&quot;&gt;HP Sprocket&lt;/a&gt; paves the way for a whole new way of experiencing mobile photography. While pictures nowadays are either ephemeral or get stored away in digital vaults, HP breathes new life into material photographs by making mobile printing available to anyone. For this piece, we sat together with Carem Pereira, SCRUM Master for the sprocket Android team in Brazil, to recap the development of HP’s portable gem.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The HP Sprocket is a beautifully small and portable printer that instantly prints two by three-inch color photos — no cartridge or ink required. Peel the back of the photos and you can even stick them onto anything you like. “Our message is that printing can be easy and fun on the go. Snap, print, and play. You can take the sprocket anywhere, easily print photos on the spot and share them with your friends” says Carem Pereira. But creating a straightforward printing experience was only half the battle for the sprocket team, as Pereira explains: “From the first day on, editing features were planned to be a central part of the sprocket’s core experience. We wanted to give our users the ability to personalize and customize their snapshots before printing or sharing them.”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;“The &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; absolutely saved us a lot of time.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&quot;From the left: Sascha Schwabbauer, yours truly, Malte Baumann&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 2000px) 2000px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;2000&quot; height=&quot;643&quot; src=&quot;https://img.ly/_astro/image-43_ZfI6JA.webp&quot; srcset=&quot;/_astro/image-43_ZhiMDh.webp 640w, /_astro/image-43_hTfv4.webp 750w, /_astro/image-43_Z1xSaD4.webp 828w, /_astro/image-43_Z2wRItY.webp 1080w, /_astro/image-43_FBY7.webp 1280w, /_astro/image-43_29tmIU.webp 1668w, /_astro/image-43_ZfI6JA.webp 2000w&quot;&gt;&lt;/p&gt;
&lt;p&gt;Consequently, HP wanted to incorporate these essential features into their free sprocket companion app that connects the user’s mobile device to the printer via Bluetooth and allows for the management and printing of the pictures. “We’ve been working on a very tight schedule and had only three months until the release of our first MVP mid-September 2016”, Pereira explains, “in the beginning, we wanted to implement the editing features ourselves, but by the time we started the estimates, we realized that we’d eventually not be able to meet our goals. So, we were looking for a third-party solution.”&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 600px) 600px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;600&quot; height=&quot;978&quot; src=&quot;https://img.ly/_astro/1-N9tXV3b7KosKu4bSuUyobw_YACug.webp&quot; srcset=&quot;/_astro/1-N9tXV3b7KosKu4bSuUyobw_YACug.webp 600w&quot;&gt;&lt;/p&gt;
&lt;p&gt;“One of our team members was already working with the SDK for another project, the HP Print Bot,” Pereira continues, “so, we compared &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt; with other solutions and found that it would be the best fit for us since it provides all the features that are crucial for our use case and we were already familiar with it. Also, it was of great importance to us that the look of the editor in sprocket matched the rest of the app and we saw that it would be very easy to accomplish that with the PhotoEditor SDK.”&lt;/p&gt;
&lt;p&gt;The PhotoEditor SDK also leaves full control over content assets like stickers, fonts and filters, a feature critical to the HP team: “We want to stay relevant to our customers and one of the examples where we accomplish that is with our assets, like Stickers and Frames that are tailored for specific times and holidays. We have releases every two weeks that contain a new set of assets,” Pereira explains.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;“It’s amazing how just a little gesture like a photograph can make such a difference in someone’s life!”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt=&quot;Office Decorations&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; sizes=&quot;(min-width: 600px) 600px, 100vw&quot; data-astro-image=&quot;constrained&quot; data-astro-image-pos=&quot;center&quot; width=&quot;600&quot; height=&quot;341&quot; src=&quot;https://img.ly/_astro/1--Q5TiPhnK9RHwSltlifupQ_17qvyK.webp&quot; srcset=&quot;/_astro/1--Q5TiPhnK9RHwSltlifupQ_17qvyK.webp 600w&quot;&gt;&lt;/p&gt;
&lt;p&gt;The HP Sprocket became an instant success. “The sprocket continues to be one of the great highlights for HP in consumer printing this year. The customers love using the printer, and we are already in millions of prints, we even sold out worldwide during the holidays last year, which was a great surprise for us,” says Carem Pereira.&lt;/p&gt;
&lt;p&gt;But it’s not only sales figures that define its impact, as the story of Dom Russell and Seb Trevaskis exemplifies: The two Physiotherapy graduates brought the HP Sprocket to a Vietnamese orphanage where they educated, designed and implemented individualized rehabilitation programs for children who suffered from mental and physical disabilities due to the Vietnam War herbicide Agent Orange. The sprocket brought happiness to the orphanage and created everlasting memories for the children, as Dom Russell explains: “The sprocket was awesome, and the kids loved it! They would stick the photos on all their favorite possessions. Some would even just stare at them for hours as it may have been the first time they’d seen a physical copy of themselves. I think those photos will stay with them for life seeing the way they reacted when it got printed and the way they treated them as well. It’s amazing how just a little gesture like a photograph can make such a difference in someone’s life!”&lt;/p&gt;
&lt;p&gt;Needless to say that sprocket was also an instant hit at our office. Playing around with the app that contains our editor was truly amazing and really let us grasp its potential. Using the sprocket on many different occasions gave us not only a hands-on experience of what our SDK is capable of but also of what needs further improvement or even what’s missing. Meanwhile our office is plastered with sprocket prints.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;“PhotoEditor SDK was an essential asset for making things work with a top-notch standard.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;“We continue to get great feedback from our users on how straightforward and easy our experience is. And again, easy, that is the key,” Pereira says, “the PhotoEditor SDK was a vital and essential asset for making things work on time and with a top-notch standard. That was paramount to us,” Carem Pereira concludes. &lt;strong&gt;We couldn’t be happier about this.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/image-42.png" medium="image"/><category>Technology</category><category>Photography</category><category>Case Study</category><category>Photos</category><category>Product Development</category><category>Case Studies</category></item><item><title>Lightweight Image comparison with Rembrandt.JS</title><link>https://img.ly/blog/lightweight-image-comparison-with-rembrandt-js-b189276d03c4/</link><guid isPermaLink="true">https://img.ly/blog/lightweight-image-comparison-with-rembrandt-js-b189276d03c4/</guid><pubDate>Wed, 08 Mar 2017 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://github.com/imgly/rembrandt&quot;&gt;Rembrandt.JS&lt;/a&gt; is a lightweight, client- and server-side image comparison library that we developed for our internal tests for the &lt;a href=&quot;https://img.ly/products/photo-sdk/&quot;&gt;PhotoEditor SDK&lt;/a&gt;. Since we’re adherents of test-driven development, we devote a lot of time and effort to writing robust tests and finding the right tools. A lot can go wrong in the process of refactoring and adding new features to our product. Since we want to make sure that our SDK performs at a top level 100% of the time, solid unit tests are crucial to our work. However, when it came to image comparison, we were not happy with the existing options. We tried to work with Blink-Diff from Yahoo, but since the tool isn’t maintained anymore and furthermore has a dependency on another unmaintained library, we chose to develop our own solution. Rembrandt.JS has no dependencies because it works client-side with the Canvas API of the browser and server-side with Node-Canvas.&lt;/p&gt;
&lt;p&gt;The primary function of Rembrandt is quite simple; &lt;strong&gt;it compares two pictures&lt;/strong&gt;. One image is the expected output of our SDK and the other one is the actual output of the PhotoEditor. After the comparison, Rembrandt outputs a numeric value between 0 and 1 indicating the percentual error rate. With an additional feature of Rembrandt, it is also possible to highlight the incorrect pixels on the image which helps to see instantly where the errors occur. Furthermore, Rembrandt.JS can compensate defective pixels that originate through compression artifacts. By comparing every pixel with its adjacent pixels with an adjustable tolerance, Rembrandt evaluates whether there’s a discrepancy or not. Said feature was critical to us since due to the sheer amount of features and filters in PhotoEditor SDK we’re always testing on a large scale. If we would’ve been using loss-free test material (like .png for example) the amount of disk space that the images would’ve been consuming would have been quite noticeable.&lt;/p&gt;
&lt;p&gt;Rembrandt.JS could also be leveraged for UI tests. With screenshots of both the design and the actual website or app, you could verify whether every object loads and behaves correctly. With the rendering option, you could quickly detect smallest discrepancies in even large sites or apps. Or, you could solve every spot the difference game within seconds.&lt;/p&gt;
&lt;p&gt;If Rembrandt is something potentially useful for your project, check out the Github repositories for &lt;a href=&quot;https://github.com/imgly/rembrandt&quot;&gt;Javascript&lt;/a&gt;, iOS and Android.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for reading! To stay in the loop, subscribe to our &lt;a href=&quot;https://photoeditorsdk.us13.list-manage.com/subscribe?u=dc9f652839dbb620d14d6d28d&amp;#x26;id=04a306e4b2&quot;&gt;Newsletter&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</content:encoded><dc:creator>Felix</dc:creator><media:content url="https://blog.img.ly/2020/04/1-nN176Cbkfr8ZA48HOY7JFA.png" medium="image"/><category>JavaScript</category><category>Software Development</category><category>Image Processing</category><category>iOS</category><category>Android</category><category>Tech</category><category>How-To</category><category>Insights</category></item></channel></rss>