convert to jpg before saving
This commit is contained in:
+16
-17
@@ -79,17 +79,29 @@ export async function shareImageModal({uri}: {uri: string}) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
const imagePath = await downloadImage(uri, String(uuid.v4()), 15e3)
|
const downloadedPath = await downloadImage(uri, String(uuid.v4()), 15e3)
|
||||||
|
const {uri: jpegUri} = await manipulateAsync(downloadedPath, [], {
|
||||||
|
format: SaveFormat.JPEG,
|
||||||
|
compress: 1.0,
|
||||||
|
})
|
||||||
|
void safeDeleteAsync(downloadedPath)
|
||||||
|
const imagePath = await moveToPermanentPath(jpegUri, '.jpg')
|
||||||
await Sharing.shareAsync(imagePath, {
|
await Sharing.shareAsync(imagePath, {
|
||||||
mimeType: mimeFromExt(imagePath),
|
mimeType: 'image/jpeg',
|
||||||
UTI: mimeFromExt(imagePath),
|
UTI: 'image/jpeg',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const ALBUM_NAME = 'Bluesky'
|
const ALBUM_NAME = 'Bluesky'
|
||||||
|
|
||||||
export async function saveImageToMediaLibrary({uri}: {uri: string}) {
|
export async function saveImageToMediaLibrary({uri}: {uri: string}) {
|
||||||
const imagePath = await downloadImage(uri, String(uuid.v4()), 15e3)
|
const downloadedPath = await downloadImage(uri, String(uuid.v4()), 15e3)
|
||||||
|
const {uri: jpegUri} = await manipulateAsync(downloadedPath, [], {
|
||||||
|
format: SaveFormat.JPEG,
|
||||||
|
compress: 1.0,
|
||||||
|
})
|
||||||
|
void safeDeleteAsync(downloadedPath)
|
||||||
|
const imagePath = await moveToPermanentPath(jpegUri, '.jpg')
|
||||||
|
|
||||||
// save
|
// save
|
||||||
try {
|
try {
|
||||||
@@ -426,16 +438,3 @@ const MIME_TO_EXT: Record<string, string> = {
|
|||||||
function extFromMime(mimeType?: string | null): string {
|
function extFromMime(mimeType?: string | null): string {
|
||||||
return (mimeType && MIME_TO_EXT[mimeType]) || 'jpg'
|
return (mimeType && MIME_TO_EXT[mimeType]) || 'jpg'
|
||||||
}
|
}
|
||||||
|
|
||||||
const EXT_TO_MIME: Record<string, string> = {
|
|
||||||
jpg: 'image/jpeg',
|
|
||||||
jpeg: 'image/jpeg',
|
|
||||||
webp: 'image/webp',
|
|
||||||
png: 'image/png',
|
|
||||||
gif: 'image/gif',
|
|
||||||
}
|
|
||||||
|
|
||||||
function mimeFromExt(path: string): string {
|
|
||||||
const ext = path.split('.').pop()
|
|
||||||
return (ext && EXT_TO_MIME[ext]) || 'image/jpeg'
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -64,8 +64,7 @@ export async function openCamera(): Promise<PickerImage> {
|
|||||||
export async function openCropper(opts: OpenCropperOptions) {
|
export async function openCropper(opts: OpenCropperOptions) {
|
||||||
const item = await ExpoImageCropTool.openCropperAsync({
|
const item = await ExpoImageCropTool.openCropperAsync({
|
||||||
...opts,
|
...opts,
|
||||||
// @ts-expect-error update @bsky.app/expo-image-crop-tool to pick up webp support
|
format: 'jpeg',
|
||||||
format: 'webp',
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -37,8 +37,7 @@ export async function openCropper(opts: OpenCropperOptions) {
|
|||||||
doneButtonText: t`Done`,
|
doneButtonText: t`Done`,
|
||||||
cancelButtonText: t`Cancel`,
|
cancelButtonText: t`Cancel`,
|
||||||
...opts,
|
...opts,
|
||||||
// @ts-expect-error update @bsky.app/expo-image-crop-tool to pick up webp support
|
format: 'jpeg',
|
||||||
format: 'webp',
|
|
||||||
})
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user