Comenzando
-
Instala el paquete
Ventana de terminal npm i @capgo/capacitor-file-compressorVentana de terminal pnpm add @capgo/capacitor-file-compressorVentana de terminal yarn add @capgo/capacitor-file-compressorVentana de terminal bun add @capgo/capacitor-file-compressor -
Sincroniza con proyectos nativos
Ventana de terminal npx cap syncVentana de terminal pnpm cap syncVentana de terminal yarn cap syncVentana de terminal bunx cap sync
Soporte de Plataformas
Section titled “Soporte de Plataformas”| Plataforma | Formatos Soportados | Notas |
|---|---|---|
| iOS | JPEG | Solo se soporta compresión JPEG |
| Android | JPEG, WebP | Ambos formatos completamente soportados |
| Web | JPEG, WebP | Compresión basada en Canvas API |
Nota: Los metadatos EXIF se eliminan durante la compresión en todas las plataformas.
Importa el plugin y comprime imágenes:
import { FileCompressor } from '@capgo/capacitor-file-compressor';
// Comprimir una imagenconst compressImage = async () => { const result = await FileCompressor.compressImage({ source: 'file:///path/to/image.jpg', quality: 0.8, width: 1920, height: 1080 });
console.log('Ruta de imagen comprimida:', result.path); console.log('Tamaño original:', result.originalSize); console.log('Tamaño comprimido:', result.size);};Referencia de API
Section titled “Referencia de API”compressImage(options)
Section titled “compressImage(options)”Comprime un archivo de imagen con dimensiones y configuraciones de calidad especificadas.
interface CompressImageOptions { source: string; // Ruta al archivo de imagen quality?: number; // 0.0 a 1.0 (predeterminado: 0.8) width?: number; // Ancho objetivo en píxeles height?: number; // Alto objetivo en píxeles format?: 'jpeg' | '.webp'; // Formato de salida}
interface CompressImageResult { path: string; // Ruta a la imagen comprimida size: number; // Tamaño del archivo comprimido en bytes originalSize: number; // Tamaño del archivo original en bytes}
const result = await FileCompressor.compressImage(options);Notas Importantes:
- Los metadatos EXIF se eliminan durante la compresión en todas las plataformas
- La relación de aspecto se mantiene automáticamente si solo se proporciona una dimensión
- Los archivos comprimidos se guardan en directorios temporales en plataformas nativas
getPluginVersion()
Section titled “getPluginVersion()”Obtiene la versión del plugin nativo.
const { version } = await FileCompressor.getPluginVersion();console.log('Versión del plugin:', version);Ejemplo Completo
Section titled “Ejemplo Completo”import { FileCompressor } from '@capgo/capacitor-file-compressor';import { Camera } from '@capacitor/camera';
export class ImageCompressionService { async captureAndCompress() { try { // Tomar una foto const photo = await Camera.getPhoto({ quality: 100, allowEditing: false, resultType: 'uri' });
if (!photo.path) { throw new Error('No image path'); }
// Comprimir la foto const compressed = await FileCompressor.compressImage({ source: photo.path, quality: 0.7, width: 1920, height: 1080, format: 'jpeg' });
console.log(`Ratio de compresión: ${ ((1 - compressed.size / compressed.originalSize) * 100).toFixed(1) }%`);
return compressed.path; } catch (error) { console.error('Compresión fallida:', error); throw error; } }
async batchCompress(imagePaths: string[]) { const results = [];
for (const path of imagePaths) { try { const result = await FileCompressor.compressImage({ source: path, quality: 0.8, width: 1280 }); results.push(result); } catch (error) { console.error(`Fallo al comprimir ${path}:`, error); } }
return results; }}Mejores Prácticas
Section titled “Mejores Prácticas”- Configuración de Calidad: Comienza con calidad 0.8 para un buen equilibrio entre tamaño de archivo y calidad de imagen
- Dimensiones de Redimensionamiento: Solo especifica dimensiones cuando sea necesario - la relación de aspecto se preserva automáticamente
- Selección de Formato: Usa JPEG para fotos y WebP para mejor compresión (solo Android/Web)
- Manejo de Errores: Siempre envuelve las llamadas de compresión en bloques try-catch
- Limpieza: Recuerda limpiar archivos temporales después de usar
Solución de Problemas
Section titled “Solución de Problemas”Problemas Comunes
Section titled “Problemas Comunes”La imagen no se comprime: Asegúrate de que la ruta de origen sea válida y accesible Sin memoria: Reduce las dimensiones objetivo o comprime imágenes de una en una Formato no soportado: Consulta la tabla de soporte de plataformas arriba