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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I love this. Excellent library!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="250768" 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/22">Post #21</a>
	                </div>
	            </div>
              <div id="likers-container-250768" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="250768"
                     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 #21"></div>
  </section>
</div>
    <div class="postbit" id="250784" data-post-id="250784">
  <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>I’ve just published <a href="https://hex.pm/packages/image/0.2.0" rel="nofollow">image version 0.2.0</a>. It has the following enhancements:</p>
<h3><a name="p-250784-enhancements-1" class="anchor" href="#p-250784-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Adds <code>Image.Text</code> to support generating an image from a string. See <code>Image.Text.text/2</code>.</p>
</li>
<li>
<p>Adds <code>Image.Shape</code> to support generating images from shapes. In this release there is a generalised support for polygons and stars.  See <code>Image.Shape.polygon/2</code> and <code>Image.Shape.star/2</code>.</p>
</li>
<li>
<p>Improves <code>Image.compose/3</code> to support composing with image lists, relative image placement and more.</p>
</li>
</ul>
<p>It was a fun and very intense few days to get this update ready for release, even though it wasn’t what I had planned. Now … back to image streaming.</p>
<p>As always, comments, suggestions, bug reports very welcome.</p>
<p>Thanks again to <a class="mention" href="/u/akash-akya" rel="nofollow">@akash-akya</a> for the fabulous <a href="https://hex.pm/packages/vix" rel="nofollow">Vix</a> without which none of this would be possible.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="250784" data-batch-url="/posts/batch_likers">
                        10
                      </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/23">Post #22</a>
	                </div>
	            </div>
              <div id="likers-container-250784" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="250784"
                     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 #22"></div>
  </section>
</div>
    <div class="postbit" id="250785" data-post-id="250785">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>This looks really neat. I’ll be sure to give it a try when I add image processing to Keila <img src="https://forum.elixirforum.com/images/emoji/apple/+1.png?v=15" title=":+1:" class="emoji" alt=":+1:" 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="250785" 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/24">Post #23</a>
	                </div>
	            </div>
              <div id="likers-container-250785" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="250785"
                     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 #23"></div>
  </section>
</div>
    <div class="postbit" id="251326" data-post-id="251326">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="kip" data-post="17" data-topic="47568">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/kip/48/1440_2.png" class="avatar"> kip:</div>
<blockquote>
<p><a class="mention" href="/u/exadra37" rel="nofollow">@Exadra37</a> well, I couldn’t help myself so I put some work into an API for text and shape overlays. Not quite ready for formal release yet but its available to try from GitHub in the <a href="https://github.com/kipcole9/image/tree/text" rel="noopener nofollow ugc">text branch </a>. These demos are in the <a href="https://github.com/kipcole9/image/blob/text/lib/image/demo.ex" rel="noopener nofollow ugc">lib/demo.ex </a> file.</p>
</blockquote>
</aside>
<p>What an awesome work you did here, I just love 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> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="251326" 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/25">Post #24</a>
	                </div>
	            </div>
              <div id="likers-container-251326" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251326"
                     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 #24"></div>
  </section>
</div>
    <div class="postbit" id="251327" data-post-id="251327">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Just perfect! I’ll be needing a library like this soon. Couple of well-intentioned comments:</p>
<ul>
<li>Ready-to-use Livebook for interactive experimenting would be awesome,</li>
<li><a href="https://hex.pm/packages?search=%22image+processing%22&amp;sort=recent_downloads" rel="nofollow">Not really discoverable on Hex</a> <img src="https://forum.elixirforum.com/images/emoji/apple/face_with_diagonal_mouth.png?v=15" title=":face_with_diagonal_mouth:" class="emoji" alt=":face_with_diagonal_mouth:" loading="lazy" width="20" height="20">,</li>
<li>The logo in <a href="https://hexdocs.pm/image/readme.html" rel="noopener nofollow ugc">the docs</a> could use some love, especially since this is an image processing library <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20">.</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="251327" 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/26">Post #25</a>
	                </div>
	            </div>
              <div id="likers-container-251327" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251327"
                     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 #25"></div>
  </section>
</div>
    <div class="postbit" id="251328" data-post-id="251328">
  <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>I completely agree with all of this. Contributions would be most welcome <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>Next steps:</p>
<ol>
<li>Vix and eVision integration so Image can do object detection. This also means integration with Nx will be supported.</li>
<li>Finish up image streaming. Be able to stream an image from S3, process it in parallel while also streaming it to a front end. Game changer.</li>
<li>Docs, Tutorials, Livebooks, … really important topic.</li>
</ol>
<p>And as for the logo … totally agree, it sucks. Very open to suggestions and contributions for something that reflects the intent and passion to make this a great lib.</p>
<p>BTW, the description of the package is:</p>
<blockquote>
<p>An approachable image processing library based upon Vix and libvips that is NIF-based, fast, multi-threaded, pipelined and has a low memory footprint.</p>
</blockquote>
<p>Which I thought hit all the buzzwords for discoverability. I guess not!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="251328" data-batch-url="/posts/batch_likers">
                        6
                      </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/27">Post #26</a>
	                </div>
	            </div>
              <div id="likers-container-251328" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="251328"
                     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 #26"></div>
  </section>
</div>
    <div class="postbit" id="254007" data-post-id="254007">
  <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>Thanks to some fabulous work by <a class="mention" href="/u/akash-akya" rel="nofollow">@akash-akya</a> in the new <a rel="nofollow">Vix version 0.11.0</a>, <a href="https://hex.pm/packages/images/0.4.0" rel="nofollow">Image version 0.4.0</a> is now released with a focus on image streaming.</p>
<h3><a name="p-254007-changelog-1" class="anchor" href="#p-254007-changelog-1" aria-label="Heading link" rel="nofollow"></a>Changelog</h3>
<ul>
<li>
<p>Adds support for opening streaming images. This allows images to be streamed from <code>File.stream!/3</code> or from any <code>t:Enumerable.t/0</code> including those created from <a href="https://hexdocs.pm/ex_aws_s3/ExAws.S3.html" rel="nofollow">ExAws.S3</a> by <a href="https://hexdocs.pm/ex_aws/ExAws.html#stream!/2" rel="nofollow">ExAws.stream!/2</a>.</p>
</li>
<li>
<p>Adds support writing streaming images. This allows images to be streamed as an enumerable which can then be consumed by <code>Plug.Conn.chunk/2</code>, by <code>ExAws.S3.upload/3</code>, <code>File.stream/3</code> or any other function that processes stream resources. See the <code>test/stream_image_test.exs</code> file for examples.</p>
</li>
<li>
<p>Adds a <code>:memory</code> option to <code>Image.write/3</code>. Instead of a path name or stream, use <code>:memory</code> if you’d like to return a <code>binary</code> form of an image in its formatted type. Note that this will run the image transformation pipeline resulting in the entire final image being loaded into memory. Therefore this option should be used sparingly since most use cases do not require this option. It is primarily added to facilitate passing images to other libraries in the Elixir ecosystem.</p>
</li>
</ul>
<h3><a name="p-254007-use-case-2" class="anchor" href="#p-254007-use-case-2" aria-label="Heading link" rel="nofollow"></a>Use case</h3>
<p>One of the benefits of <a href="https://www.libvips.org" rel="nofollow">libvips</a>, and therefore <code>Vix</code>, is that transformations are built in pipelines. Its actually quite a lot like Elixir pipelines in nature (albeit the implementation is wildly different).</p>
<p>This means we can support streaming an image into <code>Image.open/2</code>, apply a pipeline of transformations and stream the image out with <code>Image.write/3</code> or <code>Image.stream/2</code>. These operations all happen concurrently: streaming the image into the pipeline, the pipeline itself, and the streaming out again. Very memory efficient, very Elixir friendly, very easy to apply in an application.</p>
<h3><a name="p-254007-example-3" class="anchor" href="#p-254007-example-3" aria-label="Heading link" rel="nofollow"></a>Example</h3>
<p>Imagine an example where we want to stream an image from S3, apply some transformations, and stream the image to an HTTP client. Here’s the code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">ExAws.S3.download_file("images", "Hong-Kong-2015-07-1998.jpg", :memory)
|&gt; ExAws.stream!()
|&gt; Image.open!()
|&gt; Image.resize!(200)
|&gt; Image.write(conn, suffix: ".jpg")
</code></pre>
<p>Here <code>conn</code> is the <code>conn</code> of a Plug/Phoenix request. All the machinery of streaming is abstracted away. Some additional headers would need to be set for the MIME type and filename but apart from that there is nothing to do.</p>
<p>Another approach makes the stream more explicit but ultimately is the same example as that above:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">ExAws.S3.download_file("images", "Hong-Kong-2015-07-1998.jpg", :memory)
|&gt; ExAws.stream!()
|&gt; Image.open!()
|&gt; Image.resize!(200)
|&gt; Image.stream!(suffix: ".jpg")
|&gt; Enum.reduce_while(conn, fn (chunk, conn) -&gt;
  case Plug.Conn.chunk(conn, chunk) do
    {:ok, conn} -&gt;
      {:cont, conn}
    {:error, :closed} -&gt;
      {:halt, conn}
  end
end)
</code></pre>
<h3><a name="p-254007-next-steps-4" class="anchor" href="#p-254007-next-steps-4" aria-label="Heading link" rel="nofollow"></a>Next steps</h3>
<p>The next release will focus on interoperability with <a href="https://github.com/cocoa-xu/evision" rel="nofollow">eVision</a> and hopefully also <a href="https://hex.pm/packages/nx" rel="nofollow">Nx</a>. This will enable interaction with the very cool <a href="https://hex.pm/packages/axon" rel="nofollow">axon</a> and <a href="https://hex.pm/packages/axon_onnx" rel="nofollow">axon_onnx</a>.</p>
<h3><a name="p-254007-feedback-and-suggestions-5" class="anchor" href="#p-254007-feedback-and-suggestions-5" aria-label="Heading link" rel="nofollow"></a>Feedback and suggestions</h3>
<p>After the next release, primary development will be user-driven. Open an issue, start a discussion or comment here with what you’d like to see.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="254007" data-batch-url="/posts/batch_likers">
                        15
                      </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/28">Post #27</a>
	                </div>
	            </div>
              <div id="likers-container-254007" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="254007"
                     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 #27"></div>
  </section>
</div>
    <div class="postbit" id="254057" data-post-id="254057">
  <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>Turns out that <a href="https://hex.pm/packages/nx" rel="nofollow">Nx</a> integration was really straight forward due primarily to the excellent work of <a class="mention" href="/u/akash-akya" rel="nofollow">@akash-akya</a> and the Nx team.  Introducing <a href="https://hex.pm/packages/image/0.5.0" rel="nofollow">Image version 0.5.0</a> with the following changelog entry:</p>
<h3><a name="p-254057-enhancements-1" class="anchor" href="#p-254057-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Adds <code>Image.to_nx/1</code> to convert an image to an Nx tensor.</p>
</li>
<li>
<p>Adds <code>Image.from_nx/1</code> to convert an Nx tensor into an image.</p>
</li>
</ul>
<p>The conversation take care of ensuring type compatibility and ensuring the correct axes in the right order for <code>Image</code>.</p>
<p>When calling <code>Image.to_nx/1</code>, there is no data copying, just passing a reference to a heap binary so the movement is fast and garbage collection takes care of cleaning up.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="254057" data-batch-url="/posts/batch_likers">
                        15
                      </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/29">Post #28</a>
	                </div>
	            </div>
              <div id="likers-container-254057" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="254057"
                     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 #28"></div>
  </section>
</div>
    <div class="postbit" id="256058" data-post-id="256058">
  <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 href="https://hex.pm/packages/image/0.6.0" rel="nofollow">Image version 0.6.0</a> has just been published. The changelog reads:</p>
<h3><a name="p-256058-bug-fixes-1" class="anchor" href="#p-256058-bug-fixes-1" aria-label="Heading link" rel="nofollow"></a>Bug fixes</h3>
<ul>
<li>Don’t attempt to compile code that refers to <code>Plug.t</code> if <code>Plug</code> is not configured. Thanks to <a class="mention" href="/u/kwando" rel="nofollow">@kwando</a>. Closes <span class="hashtag-raw">#7</span>.</li>
</ul>
<h3><a name="p-256058-enhancements-2" class="anchor" href="#p-256058-enhancements-2" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p>Adds <code>Image.dshash/1</code> to return a 512-bit image hash.</p>
</li>
<li>
<p>Adds <code>Image.hamming_distance/2</code> to compare the similarity of two images or two image hashes.</p>
</li>
<li>
<p>Adds <code>Image.radial_gradient/3</code> to great a radial gradient image. This could be used to composite over another image to add a vignette.</p>
</li>
<li>
<p>Adds <code>Image.Math</code> logical functions <code>boolean_and/2</code>, <code>boolean_or/2</code>, <code>boolean_xor/2</code>, <code>boolean_lshift/2</code> and <code>boolean_rshift/2</code>. Also includes the <code>!</code> versions.</p>
</li>
<li>
<p>Add operator <code>use Image.Math</code> overloads for image <code>&amp;&amp;&amp;</code> (<code>and</code>), <code>|||</code> (<code>or</code>), <code>&lt;&lt;&lt;</code> (<code>lshift</code>) and <code>&gt;&gt;&gt;</code> (<code>rshift</code>).</p>
</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="256058" data-batch-url="/posts/batch_likers">
                        11
                      </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/30">Post #29</a>
	                </div>
	            </div>
              <div id="likers-container-256058" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="256058"
                     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 #29"></div>
  </section>
</div>
    <div class="postbit" id="263349" data-post-id="263349">
  <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 href="https://hex.pm/packages/image/0.9.0" rel="nofollow">Image version 0.9.0</a> has just been published.</p>
<p>The major feature is the beginning of integration with the fabulous <a href="https://github.com/cocoa-xu/evision" rel="nofollow">eVision (OpenCV)</a> by <a class="mention" href="/u/cocoa" rel="nofollow">@cocoa</a>.  The integration doesn’t copy any data to/from the <code>libvips</code> NIF and the <code>openCV</code> NIF so performance and resource utilisation should be quite good.</p>
<p>In this initial experimental release, <code>eVision</code> is an optional dependency. Only one function is exposed which decodes QRcodes. See <code>Image.QRcode.decode/1</code>.</p>
<p>The full changelog is:</p>
<h3><a name="p-263349-enhancements-1" class="anchor" href="#p-263349-enhancements-1" aria-label="Heading link" rel="nofollow"></a>Enhancements</h3>
<ul>
<li>
<p><code>Image.open/2</code> supports opening <code>.gif</code> and <code>.tif</code> images from raw binary data in addition to the previous <code>.jpeg</code>, <code>.png</code> and <code>.webp</code>.</p>
</li>
<li>
<p>Add <code>Image.shape/1</code></p>
</li>
<li>
<p>Add <code>Image.interpretation/1</code></p>
</li>
<li>
<p>Add <code>Image.type/1</code></p>
</li>
<li>
<p>Add initial support for <a href="https://github.com/cocoa-xu/evision" rel="nofollow">eVision</a>. In this release the function <code>Image.QRcode.decode/1</code> is provided to decode images that contain a QRcode. See the <code>eVision</code> repository for installation instructions since this library is not yet on <code>hex.pm</code>.</p>
</li>
<li>
<p>Removed most dialyzer warnings. The remaining warnings require an update to <code>Vix</code> (a PR has been submitted).</p>
</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="263349" 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/31">Post #30</a>
	                </div>
	            </div>
              <div id="likers-container-263349" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="263349"
                     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 #30"></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=4">Load more posts (164 remaining)</a>
</div></template></turbo-stream>