feat(imaging): default to pure-Rust codecs
This commit is contained in:
@@ -14,10 +14,10 @@ use libremetaverse::types::compat::CancellationToken;
|
||||
use libremetaverse::types::{AssetType, FolderType, InventoryType, UUID};
|
||||
use libremetaverse::{PermissionMask, Permissions};
|
||||
use libremetaverse_imaging::{
|
||||
J2kCodec, J2kCompression, J2kDecodeOptions, J2kEncodeOptions, ManagedImage,
|
||||
ManagedImageImageChannels,
|
||||
J2kCompression, J2kDecodeOptions, J2kEncodeOptions, ManagedImage, ManagedImageImageChannels,
|
||||
RustJ2kCodec,
|
||||
};
|
||||
use libremetaverse_imaging_skia::SkiaTextureCodec;
|
||||
use libremetaverse_imaging_skia::RustSkiaTextureCodec;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::fs::{self, File};
|
||||
use std::io::{Cursor, Read, Write};
|
||||
@@ -1465,14 +1465,14 @@ fn image_to_j2k(path: &Path) -> Result<Vec<u8>, String> {
|
||||
.unwrap_or("")
|
||||
.to_ascii_lowercase();
|
||||
if matches!(extension.as_str(), "jp2" | "j2c" | "j2k") {
|
||||
J2kCodec::decode_bytes(&bytes, J2kDecodeOptions::default())
|
||||
RustJ2kCodec::decode_bytes(&bytes, J2kDecodeOptions::default())
|
||||
.map_err(|_| "Invalid JPEG 2000 image".to_owned())?;
|
||||
return Ok(bytes);
|
||||
}
|
||||
let mut image = if matches!(extension.as_str(), "tga" | "targa") {
|
||||
decode_tga(&bytes)?
|
||||
} else {
|
||||
SkiaTextureCodec::new()
|
||||
RustSkiaTextureCodec::new()
|
||||
.map_err(|_| "Could not initialize the image decoder".to_owned())?
|
||||
.decode(Box::new(Cursor::new(bytes)))
|
||||
.map_err(|_| "Failed to decode image".to_owned())?
|
||||
@@ -1491,7 +1491,7 @@ fn image_to_j2k(path: &Path) -> Result<Vec<u8>, String> {
|
||||
.resize_bilinear(width.min(1024), height.min(1024))
|
||||
.map_err(|_| "Failed to limit image dimensions".to_owned())?;
|
||||
}
|
||||
J2kCodec::encode(
|
||||
RustJ2kCodec::encode(
|
||||
&image,
|
||||
J2kEncodeOptions::default().with_compression(J2kCompression::Lossy {
|
||||
compression_ratio: 10.0,
|
||||
@@ -1583,7 +1583,7 @@ async fn dump_outfit<B: Backend + ?Sized>(
|
||||
.await?;
|
||||
let jp2 = directory.join(format!("{texture_id}.jp2"));
|
||||
write_bounded(&jp2, &bytes)?;
|
||||
let image = J2kCodec::decode_bytes(&bytes, J2kDecodeOptions::default())
|
||||
let image = RustJ2kCodec::decode_bytes(&bytes, J2kDecodeOptions::default())
|
||||
.map_err(|_| format!("Failed to decode outfit texture {texture_id}"))?;
|
||||
let tga = directory.join(format!("{texture_id}.tga"));
|
||||
write_bounded(&tga, &encode_tga(&image)?)?;
|
||||
|
||||
@@ -1466,7 +1466,7 @@ async fn download_texture<B: Backend + ?Sized>(
|
||||
.as_str(),
|
||||
)?;
|
||||
write_bounded(&path, &data)?;
|
||||
let dimensions = libremetaverse_imaging::J2kCodec::decode_bytes(
|
||||
let dimensions = libremetaverse_imaging::RustJ2kCodec::decode_bytes(
|
||||
&data,
|
||||
libremetaverse_imaging::J2kDecodeOptions::default(),
|
||||
)
|
||||
@@ -1574,7 +1574,7 @@ async fn export<B: Backend + ?Sized>(
|
||||
.await?;
|
||||
let path = texture_directory.join(format!("{texture}.jp2"));
|
||||
write_bounded(&path, &data)?;
|
||||
let image = libremetaverse_imaging::J2kCodec::decode_bytes(
|
||||
let image = libremetaverse_imaging::RustJ2kCodec::decode_bytes(
|
||||
&data,
|
||||
libremetaverse_imaging::J2kDecodeOptions::default(),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user