use split off image recoding function for avatars

This commit is contained in:
B. Petersen
2020-11-01 23:41:39 +01:00
committed by link2xt
parent 7c15e4e948
commit 2720d34594
3 changed files with 5 additions and 22 deletions

View File

@@ -377,27 +377,10 @@ impl<'a> BlobObject<'a> {
true
}
pub fn recode_to_avatar_size(&self, context: &Context) -> Result<(), BlobError> {
pub async fn recode_to_avatar_size(&self, context: &Context) -> Result<(), BlobError> {
let blob_abs = self.to_abs_path();
let img = image::open(&blob_abs).map_err(|err| BlobError::RecodeFailure {
blobdir: context.get_blobdir().to_path_buf(),
blobname: blob_abs.to_str().unwrap_or_default().to_string(),
cause: err,
})?;
if img.width() <= AVATAR_SIZE && img.height() <= AVATAR_SIZE {
return Ok(());
}
let img = img.thumbnail(AVATAR_SIZE, AVATAR_SIZE);
img.save(&blob_abs).map_err(|err| BlobError::WriteFailure {
blobdir: context.get_blobdir().to_path_buf(),
blobname: blob_abs.to_str().unwrap_or_default().to_string(),
cause: err.into(),
})?;
Ok(())
self.recode_to_size(context, blob_abs, AVATAR_SIZE).await
}
pub async fn recode_to_image_size(&self, context: &Context) -> Result<(), BlobError> {
@@ -459,7 +442,7 @@ impl<'a> BlobObject<'a> {
cause: err.into(),
})?;
}
Ok(())
}

View File

@@ -2609,7 +2609,7 @@ pub async fn set_chat_profile_image(
_ => Err(err),
},
}?;
image_blob.recode_to_avatar_size(context)?;
image_blob.recode_to_avatar_size(context).await?;
chat.param.set(Param::ProfileImage, image_blob.as_name());
msg.param.set(Param::Arg, image_blob.as_name());
msg.text = Some(

View File

@@ -217,7 +217,7 @@ impl Context {
match value {
Some(value) => {
let blob = BlobObject::new_from_path(&self, value).await?;
blob.recode_to_avatar_size(self)?;
blob.recode_to_avatar_size(self).await?;
self.sql
.set_raw_config(self, key, Some(blob.as_name()))
.await