<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="270258" data-post-id="270258">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The <a href="https://hexdocs.pm/image/Image.Text.html#text/2" rel="nofollow">Image.Text.text/2</a> function uses SVG to generate the text in order to have more control over the stroke, background color and so on.  One disadvantage of using SVG is exactly the use case you are after: autowrap and autosize to fit into a bounding box.</p>
<p>I’ll add a new function, maybe <code>Image.Text.wrapped_text/2</code> to leverage <code>Vix.Vips.Operation.text/2</code> per <a class="mention" href="/u/akash-akya" rel="nofollow">@akash-akya</a>’s example above.</p>
<p>I’ve looked at unifying these capabilities into a single function but there is too much difference between the two approaches so I’ll need to make sure the documentation is clear.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270258" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/62">Post #61</a>
	                </div>
	            </div>
              <div id="likers-container-270258" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270258"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #61"></div>
  </section>
</div>
    <div class="postbit" id="270259" data-post-id="270259">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<blockquote>
<p>It would be great if <code>Image.Options.Crop.crop_focus()</code> could have a focal point <code>{x_percent, y_percent}</code> too.</p>
</blockquote>
<p><a class="mention" href="/u/tmjoen" rel="nofollow">@tmjoen</a>, <code>libvips</code> doesn’t have a corresponding option to do this that can be applied to the <code>Image.thumbnail/2</code> function. And the <code>Image.thumbnail/2</code> function does all sorts of clever things to optimise for speed and memory (for example, block reduce on open).</p>
<p>Which means I can do what you ask (and its a logical ask) but the cropping pipeline won’t be as efficient as just using <code>Image.thumbnail/2</code>.</p>
<p>Basically I can improve <code>Image.crop/2</code> to have the option to use percentage offsets rather than pixel offsets.  Would that meet your use case?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270259" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/63">Post #62</a>
	                </div>
	            </div>
              <div id="likers-container-270259" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270259"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #62"></div>
  </section>
</div>
    <div class="postbit" id="270261" data-post-id="270261">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dmitriid" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/120/13182_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dmitriid
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Text is weird (and <a href="https://faultlore.com/blah/text-hates-you/" rel="noopener nofollow ugc">hates you</a>) so it’s more on the “nice to have” side of things <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270261" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/64">Post #63</a>
	                </div>
	            </div>
              <div id="likers-container-270261" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270261"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #63"></div>
  </section>
</div>
    <div class="postbit" id="270329" data-post-id="270329">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p><a class="mention" href="/u/dmitriid" rel="nofollow">@dmitriid</a>, just because you asked for it <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> .</p>
<p>I added an option <code>:autofit</code> to <code>Image.Text.text/2</code>.  You can try it using the main branch from GitHub for now (unless issues crop up I’ll recheck the documentation and publish on Sunday).  The changelog entry is:</p>
<h3><a name="p-270329-enhancements-1" class="anchor" href="#p-270329-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>Add <code>:autofit</code> option to <code>Image.Text.text/2</code>. When set to <code>true</code>, text is rendered with <code>Vix.Vips.Operation.text/2</code>. The default, <code>false</code>, uses SVG rendering. There are pros and cons to both strategies. The main difference is that <code>autofit: true</code> will automatically size the text and perform line wrapping to fit the specified <code>:width</code> and <code>:height</code>.  Thanks to <a class="mention" href="/u/dmitriid" rel="nofollow">@dmitriid</a> for the suggestion!</li>
</ul>
<h3><a name="p-270329-examples-2" class="anchor" href="#p-270329-examples-2" aria-label="Heading link" rel="nofollow"></a>Examples</h3>
<pre data-code-wrap="elixir"><code class="lang-elixir"># The base image
iex&gt; {:ok, base_image} = Image.open("./test/support/images/Singapore-2016-09-5887.jpg") 

# Text rendered in a 300x300 image, left aligned text, colored white
iex&gt; {:ok, text} = Image.Text.text("Singapore skyline text in a 300x300 centred box", 
...&gt; height: 300, width: 300, autofit: true, text_fill_color: :white)
iex&gt; {:ok, final_image} = Image.compose(base_image, text, x: :middle, y: :center) 
</code></pre>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/5/6/560c0acb40acf455f7580ba9ec47890bc3619778.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/560c0acb40acf455f7580ba9ec47890bc3619778" title="left_text" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/5/6/560c0acb40acf455f7580ba9ec47890bc3619778_2_345x203.jpeg" alt="left_text" data-base62-sha1="chcRu7MUG7KopLwvihG383vocVG" width="345" height="203" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/5/6/560c0acb40acf455f7580ba9ec47890bc3619778_2_345x203.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/5/6/560c0acb40acf455f7580ba9ec47890bc3619778_2_517x304.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/5/6/560c0acb40acf455f7580ba9ec47890bc3619778_2_690x406.jpeg 2x" data-dominant-color="415B74"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">left_text</span><span class="informations">1000×590 86.6 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># Text rendered in a 300x300 image, right aligned text, colored white
iex&gt; {:ok, text} = Image.Text.text("Singapore skyline text in a 300x300 centred box", 
...&gt; height: 300, width: 300, autofit: true, text_fill_color: :white, justify: :right)
iex&gt; {:ok, final_image} = Image.compose(base_image, text, x: :middle, y: :center)                                                              
</code></pre>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/5/7/57ec59de20470a653b919536e4d50179237cc1da.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/57ec59de20470a653b919536e4d50179237cc1da" title="right_text" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/5/7/57ec59de20470a653b919536e4d50179237cc1da_2_345x203.jpeg" alt="right_text" data-base62-sha1="cxNV1mo2eIU4bQju3zbm0JU9aBA" width="345" height="203" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/5/7/57ec59de20470a653b919536e4d50179237cc1da_2_345x203.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/5/7/57ec59de20470a653b919536e4d50179237cc1da_2_517x304.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/5/7/57ec59de20470a653b919536e4d50179237cc1da_2_690x406.jpeg 2x" data-dominant-color="415B74"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">right_text</span><span class="informations">1000×590 86.9 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># Text rendered in a 300x300 image, center aligned text, colored white
iex&gt; {:ok, text} = Image.Text.text("Singapore skyline text in a 300x300 centred box", 
...&gt; height: 300, width: 300, autofit: true, text_fill_color: :white, justify: :center)
iex&gt; {:ok, final_image} = Image.compose(base_image, text, x: :middle, y: :center)
</code></pre>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/8/b/8ba583cbd02824b4deb4631707f7995c518923d3.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/8ba583cbd02824b4deb4631707f7995c518923d3" title="center_text" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/8/b/8ba583cbd02824b4deb4631707f7995c518923d3_2_345x203.jpeg" alt="center_text" data-base62-sha1="jVmYTSdjHlqCXkvbw3W79Ec3vc7" width="345" height="203" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/8/b/8ba583cbd02824b4deb4631707f7995c518923d3_2_345x203.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/8/b/8ba583cbd02824b4deb4631707f7995c518923d3_2_517x304.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/8/b/8ba583cbd02824b4deb4631707f7995c518923d3_2_690x406.jpeg 2x" data-dominant-color="415B74"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">center_text</span><span class="informations">1000×590 86.8 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># Text rendered in a 300x300 image, justified text, colored white
iex&gt; {:ok, text} = Image.Text.text("Singapore skyline text in a 300x300 centred box", 
...&gt; height: 300, width: 300, autofit: true, text_fill_color: :white, justify: true)
iex&gt; {:ok, final_image} = Image.compose(base_image, text, x: :middle, y: :center)
</code></pre>
<p></p><div class="lightbox-wrapper"><a class="lightbox" href="https://forum.elixirforum.com/uploads/default/original/3X/3/c/3c6e1a824c6f475bbce5475a176d591c99aa7272.jpeg" data-download-href="https://forum.elixirforum.com/uploads/default/3c6e1a824c6f475bbce5475a176d591c99aa7272" title="justify_text" rel="nofollow"><img src="https://forum.elixirforum.com/uploads/default/optimized/3X/3/c/3c6e1a824c6f475bbce5475a176d591c99aa7272_2_345x203.jpeg" alt="justify_text" data-base62-sha1="8CAxJ7zdAWVNiKQIsvdNOVvFChQ" width="345" height="203" srcset="https://forum.elixirforum.com/uploads/default/optimized/3X/3/c/3c6e1a824c6f475bbce5475a176d591c99aa7272_2_345x203.jpeg, https://forum.elixirforum.com/uploads/default/optimized/3X/3/c/3c6e1a824c6f475bbce5475a176d591c99aa7272_2_517x304.jpeg 1.5x, https://forum.elixirforum.com/uploads/default/optimized/3X/3/c/3c6e1a824c6f475bbce5475a176d591c99aa7272_2_690x406.jpeg 2x" data-dominant-color="415B74"><div class="meta"><svg class="fa d-icon d-icon-far-image svg-icon" aria-hidden="true"><use href="#far-image"></use></svg><span class="filename">justify_text</span><span class="informations">1000×590 86.9 KB</span><svg class="fa d-icon d-icon-discourse-expand svg-icon" aria-hidden="true"><use href="#discourse-expand"></use></svg></div></a></div><p></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270329" data-batch-url="/posts/batch_likers">
                        12
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/65">Post #64</a>
	                </div>
	            </div>
              <div id="likers-container-270329" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270329"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #64"></div>
  </section>
</div>
    <div class="postbit" id="270331" data-post-id="270331">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dmitriid" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dmitriid/120/13182_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dmitriid
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh. My. Glob!</p>
<p>This is amazing!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="270331" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/66">Post #65</a>
	                </div>
	            </div>
              <div id="likers-container-270331" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="270331"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #65"></div>
  </section>
</div>
    <div class="postbit" id="271005" data-post-id="271005">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tmjoen" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tmjoen
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks <a class="mention" href="/u/kip" rel="nofollow">@kip</a>, I think that would work nicely! Currently I’m calculating all this (probably poorly) myself and shelling out to <code>sharp-cli</code> for the conversion — I don’t believe that’s any faster <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="271005" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/67">Post #66</a>
	                </div>
	            </div>
              <div id="likers-container-271005" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="271005"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #66"></div>
  </section>
</div>
    <div class="postbit" id="271644" data-post-id="271644">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="a8t" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/a8t/120/20611_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  a8t
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Loving the library so far. I submitted <a href="https://github.com/kipcole9/image/pull/28" rel="noopener nofollow ugc">a PR</a> to get the tests working again, and I’d like to contribute some way to continually ensure the tests pass with strict equality.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="271644" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/68">Post #67</a>
	                </div>
	            </div>
              <div id="likers-container-271644" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="271644"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #67"></div>
  </section>
</div>
    <div class="postbit" id="271720" data-post-id="271720">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="gdub01" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/gdub01/120/3939_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  gdub01
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I wonder if something like <a href="https://huggingface.co/spaces/bookbot/Image-Upscaling-Playground" class="inline-onebox" rel="noopener nofollow ugc">Image Upscaling Playground - a Hugging Face Space by bookbot</a> could be incorporated perhaps?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="271720" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/69">Post #68</a>
	                </div>
	            </div>
              <div id="likers-container-271720" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="271720"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #68"></div>
  </section>
</div>
    <div class="postbit" id="272030" data-post-id="272030">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="tmjoen" data-post="67" data-topic="47568">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/t/7bcc69/48.png" class="avatar"> tmjoen:</div>
<blockquote>
<p>I think that would work nicely!</p>
</blockquote>
</aside>
<p><a class="mention" href="/u/tmjoen" rel="nofollow">@tmjoen</a>, I’ve published <a href="https://hex.pm/packages/image/0.16.0" rel="nofollow">Image version 0.16.0</a> with the following changelog entry. Hope that meets your requirements - of course ping me if not.</p>
<h4><a name="p-272030-enhancements-1" class="anchor" href="#p-272030-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h4>
<ul>
<li>Allow percentages to be specified as <code>Image.crop/5</code> parameters for left, top, width and height.  Percentages are expressed as floats in the range -1.0 to 1.0 (for left and top) and greater than 0.0 and less than or equal to 1.0 (for width and height). Thanks to <a class="mention" href="/u/tmjoen" rel="nofollow">@tmjoen</a> for the suggestion.</li>
</ul> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="272030" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/70">Post #69</a>
	                </div>
	            </div>
              <div id="likers-container-272030" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="272030"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #69"></div>
  </section>
</div>
    <div class="postbit" id="272031" data-post-id="272031">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="kip" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/120/1440_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  kip
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>ex_cldr Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="gdub01" data-post="69" data-topic="47568" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/gdub01/48/3939_2.png" class="avatar"> gdub01:</div>
<blockquote>
<p>I wonder if something like <a href="https://huggingface.co/spaces/bookbot/Image-Upscaling-Playground" rel="nofollow">Image Upscaling Playground - a Hugging Face Space by bookbot </a> could be incorporated perhaps?</p>
</blockquote>
</aside>
<p>Image processing definitely would benefit from a playground. Livebook smart cells would be awesome for that, its just a matter of time. I’ll open an issue on the repo - collaboration and contribution would be warmly welcome!  <a class="mention" href="/u/cocoa" rel="nofollow">@cocoa</a> is way ahead on this with <a href="https://hex.pm/evision" rel="nofollow">evision</a> so I have some catching up to do <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="272031" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/image-an-image-processing-library-based-upon-vix/47568/71">Post #70</a>
	                </div>
	            </div>
              <div id="likers-container-272031" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="272031"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #70"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/47568/load_more?page=8">Load more posts (124 remaining)</a>
</div></template></turbo-stream>