From 405fb06d5dbee5caebf167d7f4fd1171f2b1d918 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sun, 12 Oct 2025 01:46:16 -0600 Subject: [PATCH] [Android] 1.9.1 - EXIF Fixes --- android/app/build.gradle.kts | 4 +- .../openclimb/data/sync/SyncService.kt | 17 +- .../ui/components/FullscreenImageViewer.kt | 212 ++++++------------ .../openclimb/ui/components/ImageDisplay.kt | 63 +++--- .../openclimb/ui/components/ImagePicker.kt | 5 +- .../ui/components/OrientationAwareImage.kt | 149 ++++++++++++ .../openclimb/ui/screens/SettingsScreen.kt | 7 +- .../com/atridad/openclimb/utils/ImageUtils.kt | 128 +++++++---- ios/OpenClimb.xcodeproj/project.pbxproj | 8 +- .../UserInterfaceState.xcuserstate | Bin 268403 -> 161931 bytes ios/OpenClimb/Utils/ImageManager.swift | 1 + .../Utils/OrientationAwareImage.swift | 154 +++++++++++++ .../Views/AddEdit/AddAttemptView.swift | 122 +--------- .../Views/Detail/ProblemDetailView.swift | 122 +--------- ios/OpenClimb/Views/ProblemsView.swift | 77 +------ 15 files changed, 527 insertions(+), 542 deletions(-) create mode 100644 android/app/src/main/java/com/atridad/openclimb/ui/components/OrientationAwareImage.kt create mode 100644 ios/OpenClimb/Utils/OrientationAwareImage.swift diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 72cbf9e..8dd927e 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.atridad.openclimb" minSdk = 31 targetSdk = 36 - versionCode = 37 - versionName = "1.9.0" + versionCode = 38 + versionName = "1.9.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/android/app/src/main/java/com/atridad/openclimb/data/sync/SyncService.kt b/android/app/src/main/java/com/atridad/openclimb/data/sync/SyncService.kt index 5ca5f0d..9176b5f 100644 --- a/android/app/src/main/java/com/atridad/openclimb/data/sync/SyncService.kt +++ b/android/app/src/main/java/com/atridad/openclimb/data/sync/SyncService.kt @@ -88,6 +88,9 @@ class SyncService(private val context: Context, private val repository: ClimbRep private val _isTesting = MutableStateFlow(false) val isTesting: StateFlow = _isTesting.asStateFlow() + private val _isAutoSyncEnabled = MutableStateFlow(true) + val isAutoSyncEnabled: StateFlow = _isAutoSyncEnabled.asStateFlow() + // Debounced sync properties private var syncJob: Job? = null private var pendingChanges = false @@ -130,15 +133,15 @@ class SyncService(private val context: Context, private val repository: ClimbRep _isConfigured.value = serverURL.isNotEmpty() && authToken.isNotEmpty() } - var isAutoSyncEnabled: Boolean - get() = sharedPreferences.getBoolean(Keys.AUTO_SYNC_ENABLED, true) - set(value) { - sharedPreferences.edit().putBoolean(Keys.AUTO_SYNC_ENABLED, value).apply() - } + fun setAutoSyncEnabled(enabled: Boolean) { + sharedPreferences.edit().putBoolean(Keys.AUTO_SYNC_ENABLED, enabled).apply() + _isAutoSyncEnabled.value = enabled + } init { _isConnected.value = sharedPreferences.getBoolean(Keys.IS_CONNECTED, false) _lastSyncTime.value = sharedPreferences.getString(Keys.LAST_SYNC_TIME, null) + _isAutoSyncEnabled.value = sharedPreferences.getBoolean(Keys.AUTO_SYNC_ENABLED, true) updateConfiguredState() repository.setAutoSyncCallback { @@ -1104,7 +1107,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep } suspend fun triggerAutoSync() { - if (!isConfigured || !_isConnected.value || !isAutoSyncEnabled) { + if (!isConfigured || !_isConnected.value || !_isAutoSyncEnabled.value) { return } @@ -1159,7 +1162,7 @@ class SyncService(private val context: Context, private val repository: ClimbRep serverURL = "" authToken = "" - isAutoSyncEnabled = true + setAutoSyncEnabled(true) _lastSyncTime.value = null _isConnected.value = false _syncError.value = null diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/components/FullscreenImageViewer.kt b/android/app/src/main/java/com/atridad/openclimb/ui/components/FullscreenImageViewer.kt index e4d74ed..7be80c5 100644 --- a/android/app/src/main/java/com/atridad/openclimb/ui/components/FullscreenImageViewer.kt +++ b/android/app/src/main/java/com/atridad/openclimb/ui/components/FullscreenImageViewer.kt @@ -3,7 +3,6 @@ package com.atridad.openclimb.ui.components import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable -import androidx.compose.foundation.gestures.detectTransformGestures import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.itemsIndexed @@ -20,140 +19,114 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.graphicsLayer -import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties -import coil.compose.AsyncImage -import com.atridad.openclimb.utils.ImageUtils import kotlinx.coroutines.launch @OptIn(ExperimentalFoundationApi::class) @Composable -fun FullscreenImageViewer( - imagePaths: List, - initialIndex: Int = 0, - onDismiss: () -> Unit -) { +fun FullscreenImageViewer(imagePaths: List, initialIndex: Int = 0, onDismiss: () -> Unit) { val context = LocalContext.current - val pagerState = rememberPagerState( - initialPage = initialIndex, - pageCount = { imagePaths.size } - ) + val pagerState = rememberPagerState(initialPage = initialIndex, pageCount = { imagePaths.size }) val thumbnailListState = rememberLazyListState() val coroutineScope = rememberCoroutineScope() - + // Auto-scroll thumbnail list to center current image LaunchedEffect(pagerState.currentPage) { - thumbnailListState.animateScrollToItem( - index = pagerState.currentPage, - scrollOffset = -200 - ) + thumbnailListState.animateScrollToItem(index = pagerState.currentPage, scrollOffset = -200) } - + Dialog( - onDismissRequest = onDismiss, - properties = DialogProperties( - usePlatformDefaultWidth = false, - decorFitsSystemWindows = false - ) + onDismissRequest = onDismiss, + properties = + DialogProperties( + usePlatformDefaultWidth = false, + decorFitsSystemWindows = false + ) ) { - Box( - modifier = Modifier - .fillMaxSize() - .background(Color.Black) - ) { + Box(modifier = Modifier.fillMaxSize().background(Color.Black)) { // Main image pager - HorizontalPager( - state = pagerState, - modifier = Modifier.fillMaxSize() - ) { page -> - ZoomableImage( - imagePath = imagePaths[page], - modifier = Modifier.fillMaxSize() + HorizontalPager(state = pagerState, modifier = Modifier.fillMaxSize()) { page -> + OrientationAwareImage( + imagePath = imagePaths[page], + contentDescription = "Full screen image", + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Fit ) } - + // Close button IconButton( - onClick = onDismiss, - modifier = Modifier - .align(Alignment.TopEnd) - .padding(16.dp) - .background( - Color.Black.copy(alpha = 0.5f), - CircleShape - ) - ) { - Icon( - Icons.Default.Close, - contentDescription = "Close", - tint = Color.White - ) - } - + onClick = onDismiss, + modifier = + Modifier.align(Alignment.TopEnd) + .padding(16.dp) + .background(Color.Black.copy(alpha = 0.5f), CircleShape) + ) { Icon(Icons.Default.Close, contentDescription = "Close", tint = Color.White) } + // Image counter if (imagePaths.size > 1) { Card( - modifier = Modifier - .align(Alignment.TopCenter) - .padding(16.dp), - colors = CardDefaults.cardColors( - containerColor = Color.Black.copy(alpha = 0.7f) - ) + modifier = Modifier.align(Alignment.TopCenter).padding(16.dp), + colors = + CardDefaults.cardColors( + containerColor = Color.Black.copy(alpha = 0.7f) + ) ) { Text( - text = "${pagerState.currentPage + 1} / ${imagePaths.size}", - color = Color.White, - modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp) + text = "${pagerState.currentPage + 1} / ${imagePaths.size}", + color = Color.White, + modifier = Modifier.padding(horizontal = 12.dp, vertical = 6.dp) ) } } - + // Thumbnail strip (if multiple images) if (imagePaths.size > 1) { Card( - modifier = Modifier - .align(Alignment.BottomCenter) - .fillMaxWidth() - .padding(16.dp), - colors = CardDefaults.cardColors( - containerColor = Color.Black.copy(alpha = 0.7f) - ) + modifier = + Modifier.align(Alignment.BottomCenter) + .fillMaxWidth() + .padding(16.dp), + colors = + CardDefaults.cardColors( + containerColor = Color.Black.copy(alpha = 0.7f) + ) ) { LazyRow( - state = thumbnailListState, - modifier = Modifier.padding(8.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), - contentPadding = PaddingValues(horizontal = 8.dp) + state = thumbnailListState, + modifier = Modifier.padding(8.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + contentPadding = PaddingValues(horizontal = 8.dp) ) { itemsIndexed(imagePaths) { index, imagePath -> - val imageFile = ImageUtils.getImageFile(context, imagePath) val isSelected = index == pagerState.currentPage - - AsyncImage( - model = imageFile, - contentDescription = "Thumbnail ${index + 1}", - modifier = Modifier - .size(60.dp) - .clip(RoundedCornerShape(8.dp)) - .clickable { - coroutineScope.launch { - pagerState.animateScrollToPage(index) - } - } - .then( - if (isSelected) { - Modifier.background( - Color.White.copy(alpha = 0.3f), - RoundedCornerShape(8.dp) - ) - } else Modifier - ), - contentScale = ContentScale.Crop + + OrientationAwareImage( + imagePath = imagePath, + contentDescription = "Thumbnail ${index + 1}", + modifier = + Modifier.size(60.dp) + .clip(RoundedCornerShape(8.dp)) + .clickable { + coroutineScope.launch { + pagerState.animateScrollToPage(index) + } + } + .then( + if (isSelected) { + Modifier.background( + Color.White.copy( + alpha = 0.3f + ), + RoundedCornerShape(8.dp) + ) + } else Modifier + ), + contentScale = ContentScale.Crop ) } } @@ -162,48 +135,3 @@ fun FullscreenImageViewer( } } } - -@Composable -private fun ZoomableImage( - imagePath: String, - modifier: Modifier = Modifier -) { - val context = LocalContext.current - val imageFile = ImageUtils.getImageFile(context, imagePath) - - var scale by remember { mutableFloatStateOf(1f) } - var offsetX by remember { mutableFloatStateOf(0f) } - var offsetY by remember { mutableFloatStateOf(0f) } - - Box( - modifier = modifier - .pointerInput(Unit) { - detectTransformGestures( - onGesture = { _, pan, zoom, _ -> - scale = (scale * zoom).coerceIn(0.5f, 5f) - - val maxOffsetX = (size.width * (scale - 1)) / 2 - val maxOffsetY = (size.height * (scale - 1)) / 2 - - offsetX = (offsetX + pan.x).coerceIn(-maxOffsetX, maxOffsetX) - offsetY = (offsetY + pan.y).coerceIn(-maxOffsetY, maxOffsetY) - } - ) - }, - contentAlignment = Alignment.Center - ) { - AsyncImage( - model = imageFile, - contentDescription = "Full screen image", - modifier = Modifier - .fillMaxSize() - .graphicsLayer( - scaleX = scale, - scaleY = scale, - translationX = offsetX, - translationY = offsetY - ), - contentScale = ContentScale.Fit - ) - } -} diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/components/ImageDisplay.kt b/android/app/src/main/java/com/atridad/openclimb/ui/components/ImageDisplay.kt index 61cbb90..de190f4 100644 --- a/android/app/src/main/java/com/atridad/openclimb/ui/components/ImageDisplay.kt +++ b/android/app/src/main/java/com/atridad/openclimb/ui/components/ImageDisplay.kt @@ -12,36 +12,29 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp -import coil.compose.AsyncImage -import com.atridad.openclimb.utils.ImageUtils @Composable fun ImageDisplay( - imagePaths: List, - modifier: Modifier = Modifier, - imageSize: Int = 120, - onImageClick: ((Int) -> Unit)? = null + imagePaths: List, + modifier: Modifier = Modifier, + imageSize: Int = 120, + onImageClick: ((Int) -> Unit)? = null ) { val context = LocalContext.current - + if (imagePaths.isNotEmpty()) { - LazyRow( - modifier = modifier, - horizontalArrangement = Arrangement.spacedBy(8.dp) - ) { + LazyRow(modifier = modifier, horizontalArrangement = Arrangement.spacedBy(8.dp)) { itemsIndexed(imagePaths) { index, imagePath -> - val imageFile = ImageUtils.getImageFile(context, imagePath) - - AsyncImage( - model = imageFile, - contentDescription = "Problem photo", - modifier = Modifier - .size(imageSize.dp) - .clip(RoundedCornerShape(8.dp)) - .clickable(enabled = onImageClick != null) { - onImageClick?.invoke(index) - }, - contentScale = ContentScale.Crop + OrientationAwareImage( + imagePath = imagePath, + contentDescription = "Problem photo", + modifier = + Modifier.size(imageSize.dp) + .clip(RoundedCornerShape(8.dp)) + .clickable(enabled = onImageClick != null) { + onImageClick?.invoke(index) + }, + contentScale = ContentScale.Crop ) } } @@ -50,26 +43,22 @@ fun ImageDisplay( @Composable fun ImageDisplaySection( - imagePaths: List, - modifier: Modifier = Modifier, - title: String = "Photos", - onImageClick: ((Int) -> Unit)? = null + imagePaths: List, + modifier: Modifier = Modifier, + title: String = "Photos", + onImageClick: ((Int) -> Unit)? = null ) { if (imagePaths.isNotEmpty()) { Column(modifier = modifier) { Text( - text = title, - style = MaterialTheme.typography.titleMedium, - color = MaterialTheme.colorScheme.onSurface + text = title, + style = MaterialTheme.typography.titleMedium, + color = MaterialTheme.colorScheme.onSurface ) - + Spacer(modifier = Modifier.height(8.dp)) - - ImageDisplay( - imagePaths = imagePaths, - imageSize = 120, - onImageClick = onImageClick - ) + + ImageDisplay(imagePaths = imagePaths, imageSize = 120, onImageClick = onImageClick) } } } diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/components/ImagePicker.kt b/android/app/src/main/java/com/atridad/openclimb/ui/components/ImagePicker.kt index a744058..41fdf53 100644 --- a/android/app/src/main/java/com/atridad/openclimb/ui/components/ImagePicker.kt +++ b/android/app/src/main/java/com/atridad/openclimb/ui/components/ImagePicker.kt @@ -25,7 +25,6 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat import androidx.core.content.FileProvider -import coil.compose.AsyncImage import com.atridad.openclimb.utils.ImageUtils import java.io.File import java.text.SimpleDateFormat @@ -259,8 +258,8 @@ private fun ImageItem(imagePath: String, onRemove: () -> Unit, modifier: Modifie val imageFile = ImageUtils.getImageFile(context, imagePath) Box(modifier = modifier.size(80.dp)) { - AsyncImage( - model = imageFile, + OrientationAwareImage( + imagePath = imagePath, contentDescription = "Problem photo", modifier = Modifier.fillMaxSize().clip(RoundedCornerShape(8.dp)), contentScale = ContentScale.Crop diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/components/OrientationAwareImage.kt b/android/app/src/main/java/com/atridad/openclimb/ui/components/OrientationAwareImage.kt new file mode 100644 index 0000000..3d6f73d --- /dev/null +++ b/android/app/src/main/java/com/atridad/openclimb/ui/components/OrientationAwareImage.kt @@ -0,0 +1,149 @@ +package com.atridad.openclimb.ui.components + +import android.graphics.BitmapFactory +import android.graphics.Matrix +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.runtime.* +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.exifinterface.media.ExifInterface +import com.atridad.openclimb.utils.ImageUtils +import java.io.File +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Composable +fun OrientationAwareImage( + imagePath: String, + contentDescription: String? = null, + modifier: Modifier = Modifier, + contentScale: ContentScale = ContentScale.Fit +) { + val context = LocalContext.current + var imageBitmap by + remember(imagePath) { mutableStateOf(null) } + var isLoading by remember(imagePath) { mutableStateOf(true) } + + LaunchedEffect(imagePath) { + isLoading = true + val bitmap = + withContext(Dispatchers.IO) { + try { + val imageFile = ImageUtils.getImageFile(context, imagePath) + if (!imageFile.exists()) return@withContext null + + val originalBitmap = + BitmapFactory.decodeFile(imageFile.absolutePath) + ?: return@withContext null + val correctedBitmap = correctImageOrientation(imageFile, originalBitmap) + correctedBitmap.asImageBitmap() + } catch (e: Exception) { + null + } + } + imageBitmap = bitmap + isLoading = false + } + + Box(modifier = modifier) { + if (isLoading) { + CircularProgressIndicator(modifier = Modifier.fillMaxSize()) + } else { + imageBitmap?.let { bitmap -> + Image( + bitmap = bitmap, + contentDescription = contentDescription, + modifier = Modifier.fillMaxSize(), + contentScale = contentScale + ) + } + } + } +} + +private fun correctImageOrientation( + imageFile: File, + bitmap: android.graphics.Bitmap +): android.graphics.Bitmap { + return try { + val exif = ExifInterface(imageFile.absolutePath) + val orientation = + exif.getAttributeInt( + ExifInterface.TAG_ORIENTATION, + ExifInterface.ORIENTATION_NORMAL + ) + + val matrix = Matrix() + var needsTransform = false + + when (orientation) { + ExifInterface.ORIENTATION_ROTATE_90 -> { + matrix.postRotate(90f) + needsTransform = true + } + ExifInterface.ORIENTATION_ROTATE_180 -> { + matrix.postRotate(180f) + needsTransform = true + } + ExifInterface.ORIENTATION_ROTATE_270 -> { + matrix.postRotate(270f) + needsTransform = true + } + ExifInterface.ORIENTATION_FLIP_HORIZONTAL -> { + matrix.postScale(-1f, 1f) + needsTransform = true + } + ExifInterface.ORIENTATION_FLIP_VERTICAL -> { + matrix.postScale(1f, -1f) + needsTransform = true + } + ExifInterface.ORIENTATION_TRANSPOSE -> { + matrix.postRotate(90f) + matrix.postScale(-1f, 1f) + needsTransform = true + } + ExifInterface.ORIENTATION_TRANSVERSE -> { + matrix.postRotate(-90f) + matrix.postScale(-1f, 1f) + needsTransform = true + } + else -> { + if (orientation == ExifInterface.ORIENTATION_UNDEFINED || orientation == 0) { + if (imageFile.name.startsWith("problem_") && + imageFile.name.contains("_") && + imageFile.name.endsWith(".jpg") + ) { + matrix.postRotate(90f) + needsTransform = true + } + } + } + } + + if (!needsTransform) { + bitmap + } else { + val rotatedBitmap = + android.graphics.Bitmap.createBitmap( + bitmap, + 0, + 0, + bitmap.width, + bitmap.height, + matrix, + true + ) + if (rotatedBitmap != bitmap) { + bitmap.recycle() + } + rotatedBitmap + } + } catch (e: Exception) { + bitmap + } +} diff --git a/android/app/src/main/java/com/atridad/openclimb/ui/screens/SettingsScreen.kt b/android/app/src/main/java/com/atridad/openclimb/ui/screens/SettingsScreen.kt index f8dc11f..10a483e 100644 --- a/android/app/src/main/java/com/atridad/openclimb/ui/screens/SettingsScreen.kt +++ b/android/app/src/main/java/com/atridad/openclimb/ui/screens/SettingsScreen.kt @@ -38,6 +38,7 @@ fun SettingsScreen(viewModel: ClimbViewModel) { val isTesting by syncService.isTesting.collectAsState() val lastSyncTime by syncService.lastSyncTime.collectAsState() val syncError by syncService.syncError.collectAsState() + val isAutoSyncEnabled by syncService.isAutoSyncEnabled.collectAsState() // State for dialogs var showResetDialog by remember { mutableStateOf(false) } @@ -280,8 +281,10 @@ fun SettingsScreen(viewModel: ClimbViewModel) { } Spacer(modifier = Modifier.width(16.dp)) Switch( - checked = syncService.isAutoSyncEnabled, - onCheckedChange = { syncService.isAutoSyncEnabled = it } + checked = isAutoSyncEnabled, + onCheckedChange = { enabled -> + syncService.setAutoSyncEnabled(enabled) + } ) } } diff --git a/android/app/src/main/java/com/atridad/openclimb/utils/ImageUtils.kt b/android/app/src/main/java/com/atridad/openclimb/utils/ImageUtils.kt index ed4c480..9a8ae77 100644 --- a/android/app/src/main/java/com/atridad/openclimb/utils/ImageUtils.kt +++ b/android/app/src/main/java/com/atridad/openclimb/utils/ImageUtils.kt @@ -8,6 +8,7 @@ import android.net.Uri import android.provider.MediaStore import android.util.Log import androidx.core.graphics.scale +import androidx.exifinterface.media.ExifInterface import java.io.File import java.io.FileOutputStream import java.util.UUID @@ -27,7 +28,57 @@ object ImageUtils { return imagesDir } - /** Saves an image from a URI with compression and proper orientation */ + /** Saves an image from a URI while preserving EXIF orientation data */ + private fun saveImageWithExif( + context: Context, + imageUri: Uri, + originalBitmap: Bitmap, + outputFile: File + ): Boolean { + return try { + // Get EXIF data from original image + val originalExif = + context.contentResolver.openInputStream(imageUri)?.use { input -> + ExifInterface(input) + } + + // Compress and save the bitmap + val compressedBitmap = compressImage(originalBitmap) + FileOutputStream(outputFile).use { output -> + compressedBitmap.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, output) + } + + // Copy EXIF data to the saved file + originalExif?.let { sourceExif -> + val destExif = ExifInterface(outputFile.absolutePath) + + // Copy orientation and other important EXIF attributes + val orientationValue = sourceExif.getAttribute(ExifInterface.TAG_ORIENTATION) + orientationValue?.let { destExif.setAttribute(ExifInterface.TAG_ORIENTATION, it) } + + // Copy other useful EXIF data + sourceExif.getAttribute(ExifInterface.TAG_DATETIME)?.let { + destExif.setAttribute(ExifInterface.TAG_DATETIME, it) + } + sourceExif.getAttribute(ExifInterface.TAG_GPS_LATITUDE)?.let { + destExif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, it) + } + sourceExif.getAttribute(ExifInterface.TAG_GPS_LONGITUDE)?.let { + destExif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, it) + } + + destExif.saveAttributes() + } + + compressedBitmap.recycle() + true + } catch (e: Exception) { + e.printStackTrace() + false + } + } + + /** Saves an image from a URI with compression */ fun saveImageFromUri( context: Context, imageUri: Uri, @@ -42,10 +93,7 @@ object ImageUtils { } ?: return null - val orientedBitmap = correctImageOrientation(context, imageUri, originalBitmap) - val compressedBitmap = compressImage(orientedBitmap) - - // Always require deterministic naming - no UUID fallback + // Always require deterministic naming require(problemId != null && imageIndex != null) { "Problem ID and image index are required for deterministic image naming" } @@ -53,15 +101,10 @@ object ImageUtils { val filename = ImageNamingUtils.generateImageFilename(problemId, imageIndex) val imageFile = File(getImagesDirectory(context), filename) - FileOutputStream(imageFile).use { output -> - compressedBitmap.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, output) - } - + val success = saveImageWithExif(context, imageUri, originalBitmap, imageFile) originalBitmap.recycle() - if (orientedBitmap != originalBitmap) { - orientedBitmap.recycle() - } - compressedBitmap.recycle() + + if (!success) return null "$IMAGES_DIR/$filename" } catch (e: Exception) { @@ -221,23 +264,13 @@ object ImageUtils { MediaStore.Images.Media.getBitmap(context.contentResolver, imageUri) ?: return null - val orientedBitmap = correctImageOrientation(context, imageUri, originalBitmap) - val compressedBitmap = compressImage(orientedBitmap) - val tempFilename = "temp_${UUID.randomUUID()}.jpg" val imageFile = File(getImagesDirectory(context), tempFilename) - FileOutputStream(imageFile).use { output -> - compressedBitmap.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, output) - } - + val success = saveImageWithExif(context, imageUri, originalBitmap, imageFile) originalBitmap.recycle() - if (orientedBitmap != originalBitmap) { - orientedBitmap.recycle() - } - if (compressedBitmap != orientedBitmap) { - compressedBitmap.recycle() - } + + if (!success) return null tempFilename } catch (e: Exception) { @@ -315,21 +348,40 @@ object ImageUtils { filename: String ): String? { return try { - val bitmap = BitmapFactory.decodeByteArray(imageData, 0, imageData.size) ?: return null - - val compressedBitmap = compressImage(bitmap) - - // Use the provided filename instead of generating a new UUID val imageFile = File(getImagesDirectory(context), filename) - // Save compressed image - FileOutputStream(imageFile).use { output -> - compressedBitmap.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, output) - } + // Check if image is too large and needs compression + if (imageData.size > 5 * 1024 * 1024) { // 5MB threshold + // For large images, decode, compress, and try to preserve EXIF + val bitmap = + BitmapFactory.decodeByteArray(imageData, 0, imageData.size) ?: return null + val compressedBitmap = compressImage(bitmap) - // Clean up bitmaps - bitmap.recycle() - compressedBitmap.recycle() + // Save compressed image + FileOutputStream(imageFile).use { output -> + compressedBitmap.compress(Bitmap.CompressFormat.JPEG, IMAGE_QUALITY, output) + } + + // Try to preserve EXIF orientation from original data + try { + val originalExif = ExifInterface(java.io.ByteArrayInputStream(imageData)) + val destExif = ExifInterface(imageFile.absolutePath) + val orientationValue = originalExif.getAttribute(ExifInterface.TAG_ORIENTATION) + orientationValue?.let { + destExif.setAttribute(ExifInterface.TAG_ORIENTATION, it) + } + destExif.saveAttributes() + } catch (e: Exception) { + // If EXIF preservation fails, continue without it + Log.w("ImageUtils", "Failed to preserve EXIF data: ${e.message}") + } + + bitmap.recycle() + compressedBitmap.recycle() + } else { + // For smaller images, save raw data to preserve all EXIF information + FileOutputStream(imageFile).use { output -> output.write(imageData) } + } // Return relative path "$IMAGES_DIR/$filename" diff --git a/ios/OpenClimb.xcodeproj/project.pbxproj b/ios/OpenClimb.xcodeproj/project.pbxproj index e374a54..48e7589 100644 --- a/ios/OpenClimb.xcodeproj/project.pbxproj +++ b/ios/OpenClimb.xcodeproj/project.pbxproj @@ -465,7 +465,7 @@ CODE_SIGN_ENTITLEMENTS = OpenClimb/OpenClimb.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -513,7 +513,7 @@ CODE_SIGN_ENTITLEMENTS = OpenClimb/OpenClimb.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = 4BC9Y2LL4B; DRIVERKIT_DEPLOYMENT_TARGET = 24.6; ENABLE_PREVIEWS = YES; @@ -602,7 +602,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; @@ -632,7 +632,7 @@ ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_ENTITLEMENTS = SessionStatusLiveExtension.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 23; + CURRENT_PROJECT_VERSION = 24; DEVELOPMENT_TEAM = 4BC9Y2LL4B; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = SessionStatusLive/Info.plist; diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index b91ded595440e39ce74e4d247fa7fe88b066068a..f6ec7800afe8a0befc0023bb89c2707a08d575d8 100644 GIT binary patch literal 161931 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≥@(hXlWU)P6|vdjrz^ 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 F{{Uw@rGx+g literal 268403 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 COoE;Dc(+;WPC?`zwgYd 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 laXlB$LLTzr8O3W*Gx)#%c_jRQ|6S?-|M&m UIImage? { + // Load image data from ImageManager + guard + let data = await MainActor.run(body: { + ImageManager.shared.loadImageData(fromPath: imagePath) + }) + else { return nil } + + // Create UIImage from data + guard let originalImage = UIImage(data: data) else { return nil } + + // Apply orientation correction + return correctImageOrientation(originalImage) + } + + /// Corrects the orientation of a UIImage based on its EXIF data + private func correctImageOrientation(_ image: UIImage) -> UIImage { + // If the image is already in the correct orientation, return as-is + if image.imageOrientation == .up { + return image + } + + // Calculate the proper transformation matrix + var transform = CGAffineTransform.identity + + switch image.imageOrientation { + case .down, .downMirrored: + transform = transform.translatedBy(x: image.size.width, y: image.size.height) + transform = transform.rotated(by: .pi) + + case .left, .leftMirrored: + transform = transform.translatedBy(x: image.size.width, y: 0) + transform = transform.rotated(by: .pi / 2) + + case .right, .rightMirrored: + transform = transform.translatedBy(x: 0, y: image.size.height) + transform = transform.rotated(by: -.pi / 2) + + case .up, .upMirrored: + break + + @unknown default: + break + } + + switch image.imageOrientation { + case .upMirrored, .downMirrored: + transform = transform.translatedBy(x: image.size.width, y: 0) + transform = transform.scaledBy(x: -1, y: 1) + + case .leftMirrored, .rightMirrored: + transform = transform.translatedBy(x: image.size.height, y: 0) + transform = transform.scaledBy(x: -1, y: 1) + + case .up, .down, .left, .right: + break + + @unknown default: + break + } + + // Create a new image context and apply the transformation + guard let cgImage = image.cgImage else { return image } + + let context = CGContext( + data: nil, + width: Int(image.size.width), + height: Int(image.size.height), + bitsPerComponent: cgImage.bitsPerComponent, + bytesPerRow: 0, + space: cgImage.colorSpace ?? CGColorSpaceCreateDeviceRGB(), + bitmapInfo: cgImage.bitmapInfo.rawValue + ) + + guard let ctx = context else { return image } + + ctx.concatenate(transform) + + switch image.imageOrientation { + case .left, .leftMirrored, .right, .rightMirrored: + ctx.draw( + cgImage, in: CGRect(x: 0, y: 0, width: image.size.height, height: image.size.width)) + default: + ctx.draw( + cgImage, in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height)) + } + + guard let newCGImage = ctx.makeImage() else { return image } + return UIImage(cgImage: newCGImage) + } +} + +// MARK: - Convenience Extensions + +extension OrientationAwareImage { + /// Creates an orientation-aware image with fill content mode + static func fill(imagePath: String) -> OrientationAwareImage { + OrientationAwareImage(imagePath: imagePath, contentMode: .fill) + } + + /// Creates an orientation-aware image with fit content mode + static func fit(imagePath: String) -> OrientationAwareImage { + OrientationAwareImage(imagePath: imagePath, contentMode: .fit) + } +} diff --git a/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift b/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift index 3eadd0b..240640c 100644 --- a/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift +++ b/ios/OpenClimb/Views/AddEdit/AddAttemptView.swift @@ -1308,131 +1308,19 @@ struct EditAttemptView: View { struct ProblemSelectionImageView: View { let imagePath: String - @State private var uiImage: UIImage? - @State private var isLoading = true - @State private var hasFailed = false var body: some View { - Group { - if let uiImage = uiImage { - Image(uiImage: uiImage) - .resizable() - .aspectRatio(contentMode: .fill) - .frame(height: 80) - .clipped() - .cornerRadius(8) - } else if hasFailed { - RoundedRectangle(cornerRadius: 8) - .fill(.gray.opacity(0.2)) - .frame(height: 80) - .overlay { - Image(systemName: "photo") - .foregroundColor(.gray) - .font(.title3) - } - } else { - RoundedRectangle(cornerRadius: 8) - .fill(.gray.opacity(0.3)) - .frame(height: 80) - .overlay { - ProgressView() - .scaleEffect(0.8) - } - - } - } - .onAppear { - loadImage() - } - } - - private func loadImage() { - guard !imagePath.isEmpty else { - hasFailed = true - isLoading = false - return - } - - Task { - let data = await MainActor.run { - ImageManager.shared.loadImageData(fromPath: imagePath) - } - - if let data = data, let image = UIImage(data: data) { - await MainActor.run { - self.uiImage = image - self.isLoading = false - } - } else { - await MainActor.run { - self.hasFailed = true - self.isLoading = false - } - } - } + OrientationAwareImage.fill(imagePath: imagePath) + .frame(height: 80) + .clipped() + .cornerRadius(8) } } struct ProblemSelectionImageFullView: View { let imagePath: String - @State private var uiImage: UIImage? - @State private var isLoading = true - @State private var hasFailed = false var body: some View { - Group { - if let uiImage = uiImage { - Image(uiImage: uiImage) - .resizable() - .aspectRatio(contentMode: .fit) - } else if hasFailed { - RoundedRectangle(cornerRadius: 12) - .fill(.gray.opacity(0.2)) - .frame(height: 250) - .overlay { - VStack(spacing: 8) { - Image(systemName: "photo") - .foregroundColor(.gray) - .font(.largeTitle) - Text("Image not available") - .foregroundColor(.gray) - } - } - } else { - RoundedRectangle(cornerRadius: 12) - .fill(.gray.opacity(0.3)) - .frame(height: 250) - .overlay { - ProgressView() - } - } - } - .onAppear { - loadImage() - } - } - - private func loadImage() { - guard !imagePath.isEmpty else { - hasFailed = true - isLoading = false - return - } - - DispatchQueue.global(qos: .userInitiated).async { - if let data = ImageManager.shared.loadImageData(fromPath: imagePath), - let image = UIImage(data: data) - { - DispatchQueue.main.async { - self.uiImage = image - self.isLoading = false - } - } else { - DispatchQueue.main.async { - self.hasFailed = true - self.isLoading = false - } - } - } + OrientationAwareImage.fit(imagePath: imagePath) } } diff --git a/ios/OpenClimb/Views/Detail/ProblemDetailView.swift b/ios/OpenClimb/Views/Detail/ProblemDetailView.swift index cffe9b2..e37bc53 100644 --- a/ios/OpenClimb/Views/Detail/ProblemDetailView.swift +++ b/ios/OpenClimb/Views/Detail/ProblemDetailView.swift @@ -443,132 +443,20 @@ struct ImageViewerView: View { struct ProblemDetailImageView: View { let imagePath: String - @State private var uiImage: UIImage? - @State private var isLoading = true - @State private var hasFailed = false var body: some View { - Group { - if let uiImage = uiImage { - Image(uiImage: uiImage) - .resizable() - .aspectRatio(contentMode: .fill) - .frame(width: 120, height: 120) - .clipped() - .cornerRadius(12) - } else if hasFailed { - RoundedRectangle(cornerRadius: 12) - .fill(.gray.opacity(0.2)) - .frame(width: 120, height: 120) - .overlay { - Image(systemName: "photo") - .foregroundColor(.gray) - .font(.title2) - } - } else { - RoundedRectangle(cornerRadius: 12) - .fill(.gray.opacity(0.3)) - .frame(width: 120, height: 120) - .overlay { - ProgressView() - } - } - } - .onAppear { - loadImage() - } - } - - private func loadImage() { - guard !imagePath.isEmpty else { - hasFailed = true - isLoading = false - return - } - - Task { - let data = await MainActor.run { - ImageManager.shared.loadImageData(fromPath: imagePath) - } - - if let data = data, let image = UIImage(data: data) { - await MainActor.run { - self.uiImage = image - self.isLoading = false - } - } else { - await MainActor.run { - self.hasFailed = true - self.isLoading = false - } - } - } + OrientationAwareImage.fill(imagePath: imagePath) + .frame(width: 120, height: 120) + .clipped() + .cornerRadius(12) } } struct ProblemDetailImageFullView: View { let imagePath: String - @State private var uiImage: UIImage? - @State private var isLoading = true - @State private var hasFailed = false var body: some View { - Group { - if let uiImage = uiImage { - Image(uiImage: uiImage) - .resizable() - .aspectRatio(contentMode: .fit) - } else if hasFailed { - Rectangle() - .fill(.gray.opacity(0.2)) - .frame(height: 250) - .overlay { - VStack(spacing: 8) { - Image(systemName: "photo") - .foregroundColor(.gray) - .font(.largeTitle) - Text("Image not available") - .foregroundColor(.gray) - } - } - } else { - Rectangle() - .fill(.gray.opacity(0.3)) - .frame(height: 250) - .overlay { - ProgressView() - } - } - } - .onAppear { - loadImage() - } - } - - private func loadImage() { - guard !imagePath.isEmpty else { - hasFailed = true - isLoading = false - return - } - - Task { - let data = await MainActor.run { - ImageManager.shared.loadImageData(fromPath: imagePath) - } - - if let data = data, let image = UIImage(data: data) { - await MainActor.run { - self.uiImage = image - self.isLoading = false - } - } else { - await MainActor.run { - self.hasFailed = true - self.isLoading = false - } - } - } + OrientationAwareImage.fit(imagePath: imagePath) } } diff --git a/ios/OpenClimb/Views/ProblemsView.swift b/ios/OpenClimb/Views/ProblemsView.swift index f4c2e2f..3c113b6 100644 --- a/ios/OpenClimb/Views/ProblemsView.swift +++ b/ios/OpenClimb/Views/ProblemsView.swift @@ -480,81 +480,12 @@ struct EmptyProblemsView: View { struct ProblemImageView: View { let imagePath: String - @State private var uiImage: UIImage? - @State private var isLoading = true - @State private var hasFailed = false - - private static let imageCache: NSCache = { - let cache = NSCache() - cache.countLimit = 100 - cache.totalCostLimit = 50 * 1024 * 1024 // 50MB - return cache - }() var body: some View { - Group { - if let uiImage = uiImage { - Image(uiImage: uiImage) - .resizable() - .aspectRatio(contentMode: .fill) - .frame(width: 60, height: 60) - .clipped() - .cornerRadius(8) - } else if hasFailed { - RoundedRectangle(cornerRadius: 8) - .fill(.gray.opacity(0.2)) - .frame(width: 60, height: 60) - .overlay { - Image(systemName: "photo") - .foregroundColor(.gray) - .font(.title3) - } - } else { - RoundedRectangle(cornerRadius: 8) - .fill(.gray.opacity(0.3)) - .frame(width: 60, height: 60) - .overlay { - ProgressView() - .scaleEffect(0.8) - } - } - } - .onAppear { - loadImage() - } - } - - private func loadImage() { - guard !imagePath.isEmpty else { - hasFailed = true - isLoading = false - return - } - - // Load image asynchronously - Task { @MainActor in - let cacheKey = NSString(string: imagePath) - - // Check cache first - if let cachedImage = Self.imageCache.object(forKey: cacheKey) { - self.uiImage = cachedImage - self.isLoading = false - return - } - - // Load image data - if let data = ImageManager.shared.loadImageData(fromPath: imagePath), - let image = UIImage(data: data) - { - // Cache the image - Self.imageCache.setObject(image, forKey: cacheKey) - self.uiImage = image - self.isLoading = false - } else { - self.hasFailed = true - self.isLoading = false - } - } + OrientationAwareImage.fill(imagePath: imagePath) + .frame(width: 60, height: 60) + .clipped() + .cornerRadius(8) } }