Files
phy/png/struct.Writer.html
Orion Kindel 0ce894e6b0 doc
2025-03-18 10:30:23 -05:00

137 lines
42 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="PNG writer"><title>Writer in png - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="png" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.0 (9fc6b4312 2025-01-07)" data-channel="1.84.0" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../png/index.html">png</a><span class="version">0.17.14</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Writer</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.finish" title="finish">finish</a></li><li><a href="#method.into_stream_writer" title="into_stream_writer">into_stream_writer</a></li><li><a href="#method.into_stream_writer_with_size" title="into_stream_writer_with_size">into_stream_writer_with_size</a></li><li><a href="#method.reset_frame_dimension" title="reset_frame_dimension">reset_frame_dimension</a></li><li><a href="#method.reset_frame_position" title="reset_frame_position">reset_frame_position</a></li><li><a href="#method.set_adaptive_filter" title="set_adaptive_filter">set_adaptive_filter</a></li><li><a href="#method.set_blend_op" title="set_blend_op">set_blend_op</a></li><li><a href="#method.set_dispose_op" title="set_dispose_op">set_dispose_op</a></li><li><a href="#method.set_filter" title="set_filter">set_filter</a></li><li><a href="#method.set_frame_delay" title="set_frame_delay">set_frame_delay</a></li><li><a href="#method.set_frame_dimension" title="set_frame_dimension">set_frame_dimension</a></li><li><a href="#method.set_frame_position" title="set_frame_position">set_frame_position</a></li><li><a href="#method.stream_writer" title="stream_writer">stream_writer</a></li><li><a href="#method.stream_writer_with_size" title="stream_writer_with_size">stream_writer_with_size</a></li><li><a href="#method.write_chunk" title="write_chunk">write_chunk</a></li><li><a href="#method.write_image_data" title="write_image_data">write_image_data</a></li><li><a href="#method.write_text_chunk" title="write_text_chunk">write_text_chunk</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Drop-for-Writer%3CW%3E" title="Drop">Drop</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Writer%3CW%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Writer%3CW%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Writer%3CW%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-Writer%3CW%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Writer%3CW%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Writer%3CW%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate png</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="index.html">png</a></span><h1>Struct <span class="struct">Writer</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/png/encoder.rs.html#461-475">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Writer&lt;W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/std/io/trait.Write.html" title="trait std::io::Write">Write</a>&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>PNG writer</p>
<p>Progresses through the image by writing images, frames, or raw individual chunks. This is
constructed through <a href="struct.Encoder.html#method.write_header" title="method png::Encoder::write_header"><code>Encoder::write_header()</code></a>.</p>
<p>FIXME: Writing of animated chunks might be clearer if we had an <em>adapter</em> that you would call
to guarantee the next image to be prefaced with a fcTL-chunk, and all other chunks would be
guaranteed to be <code>IDAT</code>/not affected by APNGs frame control.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Writer%3CW%3E" class="impl"><a class="src rightside" href="../src/png/encoder.rs.html#547-1034">Source</a><a href="#impl-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/std/io/trait.Write.html" title="trait std::io::Write">Write</a>&gt; <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.write_chunk" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#589-598">Source</a><h4 class="code-header">pub fn <a href="#method.write_chunk" class="fn">write_chunk</a>(
&amp;mut self,
name: <a class="struct" href="chunk/struct.ChunkType.html" title="struct png::chunk::ChunkType">ChunkType</a>,
data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Write a raw chunk of PNG data.</p>
<p>The chunk will have its CRC calculated and correctly. The data is not filtered in any way,
but the chunk needs to be short enough to have its length encoded correctly.</p>
</div></details><section id="method.write_text_chunk" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#600-602">Source</a><h4 class="code-header">pub fn <a href="#method.write_text_chunk" class="fn">write_text_chunk</a>&lt;T: <a class="trait" href="text_metadata/trait.EncodableTextChunk.html" title="trait png::text_metadata::EncodableTextChunk">EncodableTextChunk</a>&gt;(
&amp;mut self,
text_chunk: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section><details class="toggle method-toggle" open><summary><section id="method.write_image_data" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#647-778">Source</a><h4 class="code-header">pub fn <a href="#method.write_image_data" class="fn">write_image_data</a>(&amp;mut self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Writes the next image data.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_filter" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#812-814">Source</a><h4 class="code-header">pub fn <a href="#method.set_filter" class="fn">set_filter</a>(&amp;mut self, filter: <a class="enum" href="enum.FilterType.html" title="enum png::FilterType">FilterType</a>)</h4></section></summary><div class="docblock"><p>Set the used filter type for the following frames.</p>
<p>The default filter is <a href="enum.FilterType.html#variant.Sub" title="variant png::FilterType::Sub"><code>FilterType::Sub</code></a> which provides a basic prediction algorithm for
sample values based on the previous. For a potentially better compression ratio, at the
cost of more complex processing, try out <a href="enum.FilterType.html#variant.Paeth" title="variant png::FilterType::Paeth"><code>FilterType::Paeth</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_adaptive_filter" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#822-824">Source</a><h4 class="code-header">pub fn <a href="#method.set_adaptive_filter" class="fn">set_adaptive_filter</a>(&amp;mut self, adaptive_filter: <a class="enum" href="enum.AdaptiveFilterType.html" title="enum png::AdaptiveFilterType">AdaptiveFilterType</a>)</h4></section></summary><div class="docblock"><p>Set the adaptive filter type for the following frames.</p>
<p>Adaptive filtering attempts to select the best filter for each line
based on heuristics which minimize the file size for compression rather
than use a single filter for the entire image. The default method is
<a href="enum.AdaptiveFilterType.html#variant.NonAdaptive" title="variant png::AdaptiveFilterType::NonAdaptive"><code>AdaptiveFilterType::NonAdaptive</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_frame_delay" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#835-843">Source</a><h4 class="code-header">pub fn <a href="#method.set_frame_delay" class="fn">set_frame_delay</a>(
&amp;mut self,
numerator: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u16.html">u16</a>,
denominator: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u16.html">u16</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the fraction of time the following frames are going to be displayed,
in seconds</p>
<p>If the denominator is 0, it is to be treated as if it were 100
(that is, the numerator then specifies 1/100ths of a second).
If the value of the numerator is 0 the decoder should render the next frame
as quickly as possible, though viewers may impose a reasonable lower bound.</p>
<p>This method will return an error if the image is not animated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_frame_dimension" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#857-874">Source</a><h4 class="code-header">pub fn <a href="#method.set_frame_dimension" class="fn">set_frame_dimension</a>(
&amp;mut self,
width: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
height: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the dimension of the following frames.</p>
<p>This function will return an error when:</p>
<ul>
<li>
<p>The image is not an animated;</p>
</li>
<li>
<p>The selected dimension, considering also the current frame position,
goes outside the image boundaries;</p>
</li>
<li>
<p>One or both the width and height are 0;</p>
</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_frame_position" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#886-899">Source</a><h4 class="code-header">pub fn <a href="#method.set_frame_position" class="fn">set_frame_position</a>(
&amp;mut self,
x: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
y: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.u32.html">u32</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the position of the following frames.</p>
<p>An error will be returned if:</p>
<ul>
<li>
<p>The image is not animated;</p>
</li>
<li>
<p>The selected position, considering also the current frame dimension,
goes outside the image boundaries;</p>
</li>
</ul>
</div></details><details class="toggle method-toggle" open><summary><section id="method.reset_frame_dimension" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#910-918">Source</a><h4 class="code-header">pub fn <a href="#method.reset_frame_dimension" class="fn">reset_frame_dimension</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the frame dimension to occupy all the image, starting from
the current position.</p>
<p>To reset the frame to the full image size <a href="struct.Writer.html#method.reset_frame_position" title="method png::Writer::reset_frame_position"><code>reset_frame_position</code></a>
should be called first.</p>
<p>This method will return an error if the image is not animated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.reset_frame_position" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#927-935">Source</a><h4 class="code-header">pub fn <a href="#method.reset_frame_position" class="fn">reset_frame_position</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the frame position to (0, 0).</p>
<p>Equivalent to calling <a href="struct.Writer.html#method.set_frame_position" title="method png::Writer::set_frame_position"><code>set_frame_position(0, 0)</code></a>.</p>
<p>This method will return an error if the image is not animated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_blend_op" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#950-957">Source</a><h4 class="code-header">pub fn <a href="#method.set_blend_op" class="fn">set_blend_op</a>(&amp;mut self, op: <a class="enum" href="enum.BlendOp.html" title="enum png::BlendOp">BlendOp</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the blend operation for the following frames.</p>
<p>The blend operation specifies whether the frame is to be alpha blended
into the current output buffer content, or whether it should completely
replace its region in the output buffer.</p>
<p>See the <a href="enum.BlendOp.html" title="enum png::BlendOp"><code>BlendOp</code></a> documentation for the possible values and their effects.</p>
<p><em>Note that for the first frame the two blend modes are functionally
equivalent due to the clearing of the output buffer at the beginning
of each play.</em></p>
<p>This method will return an error if the image is not animated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_dispose_op" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#970-977">Source</a><h4 class="code-header">pub fn <a href="#method.set_dispose_op" class="fn">set_dispose_op</a>(&amp;mut self, op: <a class="enum" href="enum.DisposeOp.html" title="enum png::DisposeOp">DisposeOp</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Set the dispose operation for the following frames.</p>
<p>The dispose operation specifies how the output buffer should be changed
at the end of the delay (before rendering the next frame)</p>
<p>See the <a href="enum.DisposeOp.html" title="enum png::DisposeOp"><code>DisposeOp</code></a> documentation for the possible values and their effects.</p>
<p><em>Note that if the first frame uses <a href="enum.DisposeOp.html#variant.Previous" title="variant png::DisposeOp::Previous"><code>DisposeOp::Previous</code></a>
it will be treated as <a href="enum.DisposeOp.html#variant.Background" title="variant png::DisposeOp::Background"><code>DisposeOp::Background</code></a>.</em></p>
<p>This method will return an error if the image is not animated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_writer" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#987-989">Source</a><h4 class="code-header">pub fn <a href="#method.stream_writer" class="fn">stream_writer</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.StreamWriter.html" title="struct png::StreamWriter">StreamWriter</a>&lt;'_, W&gt;, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Create a stream writer.</p>
<p>This allows you to create images that do not fit in memory. The default
chunk size is 4K, use <code>stream_writer_with_size</code> to set another chunk
size.</p>
<p>This borrows the writer which allows for manually appending additional
chunks after the image data has been written.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.stream_writer_with_size" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#996-998">Source</a><h4 class="code-header">pub fn <a href="#method.stream_writer_with_size" class="fn">stream_writer_with_size</a>(
&amp;mut self,
size: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.StreamWriter.html" title="struct png::StreamWriter">StreamWriter</a>&lt;'_, W&gt;, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Create a stream writer with custom buffer size.</p>
<p>See <a href="struct.Writer.html#method.stream_writer" title="method png::Writer::stream_writer"><code>stream_writer</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.into_stream_writer" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#1007-1009">Source</a><h4 class="code-header">pub fn <a href="#method.into_stream_writer" class="fn">into_stream_writer</a>(
self,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.StreamWriter.html" title="struct png::StreamWriter">StreamWriter</a>&lt;'static, W&gt;, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Turn this into a stream writer for image data.</p>
<p>This allows you to create images that do not fit in memory. The default
chunk size is 4K, use <a href="struct.Writer.html#method.stream_writer_with_size" title="method png::Writer::stream_writer_with_size"><code>stream_writer_with_size</code></a> to set another chunk
size.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.into_stream_writer_with_size" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#1016-1018">Source</a><h4 class="code-header">pub fn <a href="#method.into_stream_writer_with_size" class="fn">into_stream_writer_with_size</a>(
self,
size: <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.usize.html">usize</a>,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.StreamWriter.html" title="struct png::StreamWriter">StreamWriter</a>&lt;'static, W&gt;, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Turn this into a stream writer with custom buffer size.</p>
<p>See <a href="struct.Writer.html#method.into_stream_writer" title="method png::Writer::into_stream_writer"><code>into_stream_writer</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.finish" class="method"><a class="src rightside" href="../src/png/encoder.rs.html#1025-1033">Source</a><h4 class="code-header">pub fn <a href="#method.finish" class="fn">finish</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.unit.html">()</a>, <a class="enum" href="enum.EncodingError.html" title="enum png::EncodingError">EncodingError</a>&gt;</h4></section></summary><div class="docblock"><p>Consume the stream writer with validation.</p>
<p>Unlike a simple drop this ensures that the final chunk was written correctly. When other
validation options (chunk sequencing) had been turned on in the configuration then it will
also do a check on their correctness <em>before</em> writing the final chunk.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Drop-for-Writer%3CW%3E" class="impl"><a class="src rightside" href="../src/png/encoder.rs.html#1036-1042">Source</a><a href="#impl-Drop-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/std/io/trait.Write.html" title="trait std::io::Write">Write</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/ops/drop/trait.Drop.html" title="trait core::ops::drop::Drop">Drop</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.drop" class="method trait-impl"><a class="src rightside" href="../src/png/encoder.rs.html#1037-1041">Source</a><a href="#method.drop" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/ops/drop/trait.Drop.html#tymethod.drop" class="fn">drop</a>(&amp;mut self)</h4></section></summary><div class='docblock'>Executes the destructor for this type. <a href="https://doc.rust-lang.org/1.84.0/core/ops/drop/trait.Drop.html#tymethod.drop">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-Writer%3CW%3E" class="impl"><a href="#impl-Freeze-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,</div></h3></section><section id="impl-RefUnwindSafe-for-Writer%3CW%3E" class="impl"><a href="#impl-RefUnwindSafe-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-Writer%3CW%3E" class="impl"><a href="#impl-Send-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-Writer%3CW%3E" class="impl"><a href="#impl-Sync-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-Writer%3CW%3E" class="impl"><a href="#impl-Unpin-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-Writer%3CW%3E" class="impl"><a href="#impl-UnwindSafe-for-Writer%3CW%3E" class="anchor">§</a><h3 class="code-header">impl&lt;W&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.Writer.html" title="struct png::Writer">Writer</a>&lt;W&gt;<div class="where">where
W: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.84.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.0/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>