mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-07-28 17:38:53 +02:00
fix(clipboard-manager): read_image wrongly set the image rgba data with binary PNG data. (#1986)
* fix(clipboard-manager): `read_image` wrongly set the image rgba data with binary PNG data. * remove depencency of `image` crate; add patch file
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"clipboard-manager": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix that `read_image` wrongly set the image rgba data with binary PNG data.
|
||||||
@@ -37,4 +37,3 @@ tauri = { workspace = true, features = ["wry"] }
|
|||||||
|
|
||||||
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
[target."cfg(any(target_os = \"macos\", windows, target_os = \"linux\", target_os = \"dragonfly\", target_os = \"freebsd\", target_os = \"openbsd\", target_os = \"netbsd\"))".dependencies]
|
||||||
arboard = "3"
|
arboard = "3"
|
||||||
image = "0.25"
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
use arboard::ImageData;
|
use arboard::ImageData;
|
||||||
use image::ImageEncoder;
|
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
use tauri::{image::Image, plugin::PluginApi, AppHandle, Runtime};
|
use tauri::{image::Image, plugin::PluginApi, AppHandle, Runtime};
|
||||||
|
|
||||||
@@ -85,16 +84,11 @@ impl<R: Runtime> Clipboard<R> {
|
|||||||
match &self.clipboard {
|
match &self.clipboard {
|
||||||
Ok(clipboard) => {
|
Ok(clipboard) => {
|
||||||
let image = clipboard.lock().unwrap().get_image()?;
|
let image = clipboard.lock().unwrap().get_image()?;
|
||||||
|
let image = Image::new_owned(
|
||||||
let mut buffer: Vec<u8> = Vec::new();
|
image.bytes.to_vec(),
|
||||||
image::codecs::png::PngEncoder::new(&mut buffer).write_image(
|
|
||||||
&image.bytes,
|
|
||||||
image.width as u32,
|
image.width as u32,
|
||||||
image.height as u32,
|
image.height as u32,
|
||||||
image::ExtendedColorType::Rgba8,
|
);
|
||||||
)?;
|
|
||||||
|
|
||||||
let image = Image::new_owned(buffer, image.width as u32, image.height as u32);
|
|
||||||
Ok(image)
|
Ok(image)
|
||||||
}
|
}
|
||||||
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
Err(e) => Err(crate::Error::Clipboard(e.to_string())),
|
||||||
|
|||||||
@@ -15,9 +15,6 @@ pub enum Error {
|
|||||||
Clipboard(String),
|
Clipboard(String),
|
||||||
#[error(transparent)]
|
#[error(transparent)]
|
||||||
Tauri(#[from] tauri::Error),
|
Tauri(#[from] tauri::Error),
|
||||||
#[cfg(desktop)]
|
|
||||||
#[error("invalid image: {0}")]
|
|
||||||
Image(#[from] image::ImageError),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Serialize for Error {
|
impl Serialize for Error {
|
||||||
|
|||||||
Reference in New Issue
Block a user