+ ofile.write_all(&vline[..w2]).unwrap();
+ ofile.write_all(pad.as_slice()).unwrap();
+ }
+ }
+ } else {
+ if !is_flipped {
+ for uline in u.chunks(stride1) {
+ ofile.write_all(&uline[..w2]).unwrap();
+ ofile.write_all(pad.as_slice()).unwrap();
+ }
+ for vline in v.chunks(stride2) {
+ ofile.write_all(&vline[..w2]).unwrap();
+ ofile.write_all(pad.as_slice()).unwrap();
+ }
+ } else {
+ for uline in u.chunks(stride1).rev() {
+ ofile.write_all(&uline[..w2]).unwrap();
+ ofile.write_all(pad.as_slice()).unwrap();
+ }
+ for vline in v.chunks(stride2).rev() {
+ ofile.write_all(&vline[..w2]).unwrap();
+ ofile.write_all(pad.as_slice()).unwrap();
+ }
+ }
+ }
+ if has_alpha {
+ let ls = buf.get_stride(3);
+ let mut idx = buf.get_offset(3);
+ let mut idx2 = idx + w;
+ for _ in 0..h {
+ let line = &dta[idx..idx2];
+ ofile.write_all(line).unwrap();
+ idx += ls;
+ idx2 += ls;
+ }