pub struct Picture {
pub blob: Option<Vec<u8>>,
pub ext: String,
/* private fields */
}Expand description
一张图片。
Fields§
§blob: Option<Vec<u8>>图片字节。保存时写入 zip。
ext: String扩展名(含 .,如 .png),用于推导 Content-Type。
Implementations§
Source§impl Picture
impl Picture
Sourcepub fn properties(&self) -> &ShapeProperties
pub fn properties(&self) -> &ShapeProperties
形状属性不可变引用。
Sourcepub fn properties_mut(&mut self) -> &mut ShapeProperties
pub fn properties_mut(&mut self) -> &mut ShapeProperties
形状属性可变引用。
Sourcepub fn set_fill_mode(&mut self, mode: BlipFillMode)
pub fn set_fill_mode(&mut self, mode: BlipFillMode)
设置图片填充模式(拉伸/平铺/无)。
对应 OOXML <a:stretch> / <a:tile> 元素。
默认为 BlipFillMode::Stretch(拉伸铺满)。
Sourcepub fn set_stretch(&mut self)
pub fn set_stretch(&mut self)
设置为拉伸填充模式(便捷方法)。
Sourcepub fn set_tile(
&mut self,
tx: Option<i64>,
ty: Option<i64>,
sx: Option<i32>,
sy: Option<i32>,
flip: Option<&str>,
algn: Option<&str>,
)
pub fn set_tile( &mut self, tx: Option<i64>, ty: Option<i64>, sx: Option<i32>, sy: Option<i32>, flip: Option<&str>, algn: Option<&str>, )
设置为平铺填充模式。
§参数
tx/ty:水平/垂直偏移(EMU),None表示不设置;sx/sy:水平/垂直缩放(千分比,100000 = 100%),None表示不设置;flip:翻转模式("none"/"x"/"y"/"xy"),None表示不设置;algn:对齐方式("tl"/"ctr"/"br"等),None表示不设置。
Sourcepub fn fill_mode(&self) -> &BlipFillMode
pub fn fill_mode(&self) -> &BlipFillMode
取当前填充模式。
Sourcepub fn set_crop(&mut self, left: i32, top: i32, right: i32, bottom: i32)
pub fn set_crop(&mut self, left: i32, top: i32, right: i32, bottom: i32)
设置裁剪(TODO-044 高阶 API,crop 的 python-pptx 风格别名)。
与 crop 完全等价,仅方法名对齐 python-pptx
picture.set_crop(left, top, right, bottom) 风格。
Sourcepub fn clear_crop(&mut self)
pub fn clear_crop(&mut self)
清除裁剪(恢复原图)。
Sourcepub fn crop_right(&self) -> i32
pub fn crop_right(&self) -> i32
取右侧裁剪量(千分比,TODO-044 高阶 API)。
Sourcepub fn crop_bottom(&self) -> i32
pub fn crop_bottom(&self) -> i32
取底部裁剪量(千分比,TODO-044 高阶 API)。
Sourcepub fn set_crop_left(&mut self, left: i32)
pub fn set_crop_left(&mut self, left: i32)
设置左侧裁剪量(千分比,TODO-044 高阶 API),保留其它三边。
Sourcepub fn set_crop_top(&mut self, top: i32)
pub fn set_crop_top(&mut self, top: i32)
设置顶部裁剪量(千分比,TODO-044 高阶 API),保留其它三边。
Sourcepub fn set_crop_right(&mut self, right: i32)
pub fn set_crop_right(&mut self, right: i32)
设置右侧裁剪量(千分比,TODO-044 高阶 API),保留其它三边。
Sourcepub fn set_crop_bottom(&mut self, bottom: i32)
pub fn set_crop_bottom(&mut self, bottom: i32)
设置底部裁剪量(千分比,TODO-044 高阶 API),保留其它三边。
Sourcepub fn set_placeholder(&mut self, ph_idx: u32, ph_type: Option<&str>)
pub fn set_placeholder(&mut self, ph_idx: u32, ph_type: Option<&str>)
标记本图片为占位符填充(<p:ph type="pic" idx="..."/>)。
§参数
ph_idx:占位符 idx(对应版式中<p:ph idx="N"/>的 N)。ph_type:占位符类型字符串(通常"pic",传None则不写出type属性)。
§示例
use pptx_rs::Presentation;
use pptx_rs::units::Inches;
let mut p = Presentation::new().unwrap();
let counter = p.id_counter();
let s = p.slides_mut().add_slide(counter).unwrap();
// 假设版式有 idx=10 的图片占位符
let mut pic = s.shapes_mut().add_picture("logo.png", Inches(1.0), Inches(1.0), Inches(4.0), Inches(3.0)).unwrap();
pic.set_placeholder(10, Some("pic"));Sourcepub fn clear_placeholder(&mut self)
pub fn clear_placeholder(&mut self)
清除占位符标记(让本图片回到“自由图片“状态)。
Sourcepub fn is_placeholder(&self) -> bool
pub fn is_placeholder(&self) -> bool
是否为占位符填充。
Sourcepub fn ph_idx(&self) -> Option<u32>
pub fn ph_idx(&self) -> Option<u32>
占位符 idx(仅当 is_placeholder 为 true 时有意义)。
Sourcepub fn set_video(&mut self, rid: impl Into<String>)
pub fn set_video(&mut self, rid: impl Into<String>)
把本图片标记为视频形状(<a:videoFile r:link="..."/>)。
调用后 Pic::write_xml 会在 <p:nvPr> 内写出 <a:videoFile r:link="..."/>,
PowerPoint 渲染时会把该 <p:pic> 当作视频形状处理(双击播放)。
§参数
rid:媒体 part 的关系 id(指向/ppt/media/mediaN.mp4)。 该 rid 必须与slideN.xml.rels中的<Relationship Type=".../video"/>一致, 由crate::slide::ShapesMut::add_video自动分配,或由调用方手动维护。
§与海报帧 rid 的区别
- 海报帧图片的
r:embed关系通过pic_mut().rid设置(指向 imageN.png); set_video设置的是视频文件的r:link关系(指向 mediaN.mp4)。 二者独立,互不影响。
§示例
let mut pic = s.shapes_mut().add_picture("poster.png",
Inches(1.0), Inches(1.0), Inches(4.0), Inches(3.0)).unwrap();
pic.set_video("rIdVideo1");Sourcepub fn set_audio(&mut self, rid: impl Into<String>)
pub fn set_audio(&mut self, rid: impl Into<String>)
把本图片标记为音频形状(<a:audioFile r:link="..."/>)。
与 Self::set_video 对称,仅媒体类型不同。
§参数
rid:媒体 part 的关系 id(指向/ppt/media/mediaN.mp3)。
Sourcepub fn media_kind(&self) -> Option<&MediaKind>
pub fn media_kind(&self) -> Option<&MediaKind>
取当前媒体类型(视频/音频/None)。
返回 None 表示普通图片;Some(MediaKind::Video { rid }) / Some(MediaKind::Audio { rid })
表示已通过 Self::set_video / Self::set_audio 标记为媒体形状。
Sourcepub fn clear_media(&mut self)
pub fn clear_media(&mut self)
清除媒体标记(让本图片回到普通图片状态)。