Take row stride input in chunk bytes
This commit is contained in:
1 parent
59d32a66a7
commit
c370ac4b92
1 file changed
+14
-8
+14
-8
@@ -907,23 +907,23 @@ impl<R: Read + Seek> Decoder<R> {
|
|||||||
chunk_index: u32,
|
chunk_index: u32,
|
||||||
output_width: usize,
|
output_width: usize,
|
||||||
) -> TiffResult<()> {
|
) -> TiffResult<()> {
|
||||||
self.read_chunk_to_bytes(buffer.as_bytes_mut(), chunk_index, output_width)
|
let output_row_stride = (output_width as u64)
|
||||||
|
.saturating_mul(self.image.samples_per_pixel() as u64)
|
||||||
|
.saturating_mul(self.image.bits_per_sample as u64)
|
||||||
|
.div_ceil(8);
|
||||||
|
|
||||||
|
self.read_chunk_to_bytes(buffer.as_bytes_mut(), chunk_index, output_row_stride)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_chunk_to_bytes(
|
fn read_chunk_to_bytes(
|
||||||
&mut self,
|
&mut self,
|
||||||
buffer: &mut [u8],
|
buffer: &mut [u8],
|
||||||
chunk_index: u32,
|
chunk_index: u32,
|
||||||
output_width: usize,
|
output_row_stride: u64,
|
||||||
) -> TiffResult<()> {
|
) -> TiffResult<()> {
|
||||||
let offset = self.image.chunk_file_range(chunk_index)?.0;
|
let offset = self.image.chunk_file_range(chunk_index)?.0;
|
||||||
self.goto_offset_u64(offset)?;
|
self.goto_offset_u64(offset)?;
|
||||||
|
|
||||||
let output_row_stride = (output_width as u64)
|
|
||||||
.saturating_mul(self.image.samples_per_pixel() as u64)
|
|
||||||
.saturating_mul(self.image.bits_per_sample as u64)
|
|
||||||
/ 8;
|
|
||||||
|
|
||||||
self.image.expand_chunk(
|
self.image.expand_chunk(
|
||||||
&mut self.value_reader,
|
&mut self.value_reader,
|
||||||
buffer,
|
buffer,
|
||||||
@@ -1030,7 +1030,13 @@ impl<R: Read + Seek> Decoder<R> {
|
|||||||
|
|
||||||
let extent = self.result_extent(data_dims.0 as usize, data_dims.1 as usize)?;
|
let extent = self.result_extent(data_dims.0 as usize, data_dims.1 as usize)?;
|
||||||
extent.assert_layout(buffer.len())?;
|
extent.assert_layout(buffer.len())?;
|
||||||
self.read_chunk_to_bytes(buffer, chunk_index, data_dims.0 as usize)?;
|
|
||||||
|
let output_row_stride = u64::from(data_dims.0)
|
||||||
|
.saturating_mul(self.image.samples_per_pixel() as u64)
|
||||||
|
.saturating_mul(self.image.bits_per_sample as u64)
|
||||||
|
.div_ceil(8);
|
||||||
|
|
||||||
|
self.read_chunk_to_bytes(buffer, chunk_index, output_row_stride)?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user