react-native-compressor 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -15
- package/android/build.gradle +8 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.kt +527 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioMain.kt +31 -0
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.kt +157 -0
- package/android/src/main/java/com/reactnativecompressor/CompressorPackage.kt +34 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.kt +199 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressorOptions.kt +57 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageMain.kt +31 -0
- package/android/src/main/java/com/reactnativecompressor/Image/ImageSize.kt +3 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Downloader.kt +119 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/EventEmitterHandler.kt +66 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.kt +61 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.kt +177 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Uploader.kt +117 -0
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.kt +162 -0
- package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression.kt +63 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.kt +125 -0
- package/android/src/main/java/com/reactnativecompressor/Video/VideoMain.kt +86 -0
- package/android/src/newarch/CompressorSpec.kt +5 -0
- package/android/src/oldarch/CompressorSpec.kt +32 -0
- package/ios/Audio/AudioMain.swift +115 -0
- package/ios/Compressor-Bridging-Header.h +1 -2
- package/ios/Compressor.h +0 -8
- package/ios/Compressor.mm +28 -389
- package/ios/CompressorManager.swift +96 -0
- package/ios/Image/ImageCompressor.swift +354 -0
- package/ios/Image/ImageCompressorOptions.swift +93 -0
- package/ios/Image/ImageMain.swift +27 -0
- package/ios/Utils/Downloader.swift +157 -0
- package/ios/Utils/EventEmitterHandler.swift +54 -0
- package/ios/Utils/MediaCache.swift +48 -0
- package/ios/Utils/Uploader.swift +99 -0
- package/ios/Utils/Utils.swift +110 -0
- package/ios/Video/{VideoCompressor.swift → VideoMain.swift} +168 -147
- package/lib/commonjs/Image/index.js +1 -1
- package/lib/commonjs/Image/index.js.map +1 -1
- package/lib/commonjs/Main.js +1 -8
- package/lib/commonjs/Main.js.map +1 -1
- package/lib/commonjs/Spec/NativeCompressor.js.map +1 -1
- package/lib/commonjs/Video/index.js +4 -33
- package/lib/commonjs/Video/index.js.map +1 -1
- package/lib/commonjs/expo-plugin/compressor.js.map +1 -1
- package/lib/commonjs/index.js +11 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/Downloader.js +38 -0
- package/lib/commonjs/utils/Downloader.js.map +1 -0
- package/lib/commonjs/utils/Uploader.js +40 -0
- package/lib/commonjs/utils/Uploader.js.map +1 -0
- package/lib/commonjs/utils/index.js +35 -0
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/module/Image/index.js +1 -1
- package/lib/module/Image/index.js.map +1 -1
- package/lib/module/Main.js +1 -7
- package/lib/module/Main.js.map +1 -1
- package/lib/module/Spec/NativeCompressor.js.map +1 -1
- package/lib/module/Video/index.js +5 -33
- package/lib/module/Video/index.js.map +1 -1
- package/lib/module/expo-plugin/compressor.js.map +1 -1
- package/lib/module/index.js +6 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/Downloader.js +31 -0
- package/lib/module/utils/Downloader.js.map +1 -0
- package/lib/module/utils/Uploader.js +33 -0
- package/lib/module/utils/Uploader.js.map +1 -0
- package/lib/module/utils/index.js +2 -0
- package/lib/module/utils/index.js.map +1 -1
- package/lib/typescript/Image/index.d.ts +4 -0
- package/lib/typescript/Image/index.d.ts.map +1 -1
- package/lib/typescript/Main.d.ts +1 -2
- package/lib/typescript/Main.d.ts.map +1 -1
- package/lib/typescript/Spec/NativeCompressor.d.ts +8 -2
- package/lib/typescript/Spec/NativeCompressor.d.ts.map +1 -1
- package/lib/typescript/Video/index.d.ts +4 -28
- package/lib/typescript/Video/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +5 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/Downloader.d.ts +2 -0
- package/lib/typescript/utils/Downloader.d.ts.map +1 -0
- package/lib/typescript/utils/Uploader.d.ts +28 -0
- package/lib/typescript/utils/Uploader.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +2 -1
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/package.json +6 -4
- package/src/Image/index.tsx +5 -1
- package/src/Main.tsx +1 -15
- package/src/Spec/NativeCompressor.ts +14 -2
- package/src/Video/index.tsx +11 -84
- package/src/expo-plugin/compressor.ts +1 -1
- package/src/index.tsx +6 -3
- package/src/utils/Downloader.tsx +38 -0
- package/src/utils/Uploader.tsx +78 -0
- package/src/utils/index.tsx +2 -0
- package/android/src/main/java/com/reactnativecompressor/Audio/AudioCompressor.java +0 -605
- package/android/src/main/java/com/reactnativecompressor/CompressorModule.java +0 -220
- package/android/src/main/java/com/reactnativecompressor/CompressorPackage.java +0 -58
- package/android/src/main/java/com/reactnativecompressor/Image/ImageCompressor.java +0 -257
- package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageCompressorOptions.java +0 -69
- package/android/src/main/java/com/reactnativecompressor/Image/utils/ImageSize.java +0 -13
- package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploadHelper.java +0 -39
- package/android/src/main/java/com/reactnativecompressor/Utils/FileUplaoder/FileUploader.java +0 -129
- package/android/src/main/java/com/reactnativecompressor/Utils/MediaCache.java +0 -65
- package/android/src/main/java/com/reactnativecompressor/Utils/RealPathUtil.java +0 -210
- package/android/src/main/java/com/reactnativecompressor/Utils/Utils.java +0 -272
- package/android/src/main/java/com/reactnativecompressor/Video/AutoVideoCompression/AutoVideoCompression.java +0 -87
- package/android/src/main/java/com/reactnativecompressor/Video/VideoCompressorHelper.java +0 -182
- package/android/src/main/java/com/reactnativecompressor/Video/VideoModule.java +0 -112
- package/android/src/newarch/CompressorSpec.java +0 -9
- package/android/src/newarch/VideoCompressorSpec.java +0 -9
- package/android/src/oldarch/CompressorSpec.java +0 -34
- package/android/src/oldarch/VideoCompressorSpec.java +0 -26
- package/ios/Image/ImageCompressor.h +0 -22
- package/ios/Image/ImageCompressor.m +0 -540
- package/ios/Image/ImageCompressorOptions.h +0 -28
- package/ios/Image/ImageCompressorOptions.m +0 -97
- package/ios/Utils/Downloader.h +0 -16
- package/ios/Utils/Downloader.m +0 -150
- package/ios/Utils/MediaCache.h +0 -11
- package/ios/Utils/MediaCache.m +0 -51
- package/ios/Video/VideoCompressor.h +0 -5
- package/ios/Video/VideoCompressor.m +0 -1
- package/lib/commonjs/Spec/NativeVideoCompressor.js +0 -10
- package/lib/commonjs/Spec/NativeVideoCompressor.js.map +0 -1
- package/lib/module/Spec/NativeVideoCompressor.js +0 -3
- package/lib/module/Spec/NativeVideoCompressor.js.map +0 -1
- package/lib/typescript/Spec/NativeVideoCompressor.d.ts +0 -13
- package/lib/typescript/Spec/NativeVideoCompressor.d.ts.map +0 -1
- package/src/Spec/NativeVideoCompressor.ts +0 -14
package/README.md
CHANGED
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
**REACT-NATIVE-COMPRESSOR** is a react-native package, which helps us to Compress `Image`, `Video`, and `Audio` before uploading, same like **Whatsapp** without knowing the compression `algorithm`
|
|
18
18
|
|
|
19
19
|
<div align="center">
|
|
20
|
-
<
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
<pre>
|
|
21
|
+
<img height="90" src="/media/whatsapp_logo.png"/> <img height="90" src="/media/compress_media.png"/>
|
|
22
|
+
</pre>
|
|
23
23
|
<h2 align="center">🗜️Compress Image, Video, and Audio same like Whatsapp</h2>
|
|
24
24
|
</div>
|
|
25
25
|
|
|
@@ -53,9 +53,7 @@ We should use **react-native-compressor** instead of **FFmpeg** because **react-
|
|
|
53
53
|
<summary>Open Table of Contents</summary>
|
|
54
54
|
|
|
55
55
|
- [Installation](#installation)
|
|
56
|
-
- [For React Native](#
|
|
57
|
-
- [For React Native<0.65](#for-react-native065)
|
|
58
|
-
- [For React Native 0.65 or greater](#for-react-native-065-or-greater)
|
|
56
|
+
- [For React Native](#Installation)
|
|
59
57
|
- [Managed Expo](#managed-expo)
|
|
60
58
|
- [Usage](#usage)
|
|
61
59
|
- [Image](#image)
|
|
@@ -69,6 +67,7 @@ We should use **react-native-compressor** instead of **FFmpeg** because **react-
|
|
|
69
67
|
- [Video Api Docs](#video-1)
|
|
70
68
|
- [Audio](#audio)
|
|
71
69
|
- [Background Upload](#background-upload)
|
|
70
|
+
- [Download File](#download)
|
|
72
71
|
|
|
73
72
|
* [Other Utilities](#api)
|
|
74
73
|
- [Background Upload](#background-upload-1)
|
|
@@ -84,8 +83,8 @@ yarn add react-native-compressor
|
|
|
84
83
|
```
|
|
85
84
|
|
|
86
85
|
### [New Architecture (Turbo Module)](https://reactnative.dev/docs/new-architecture-intro) Supported
|
|
87
|
-
you can give feedback on [Discord channel](https://discord.gg/dtYzk8sp)
|
|
88
86
|
|
|
87
|
+
you can give feedback on [Discord channel](https://discord.gg/dtYzk8sp)
|
|
89
88
|
|
|
90
89
|
### Managed Expo
|
|
91
90
|
|
|
@@ -163,10 +162,11 @@ import { Image } from 'react-native-compressor';
|
|
|
163
162
|
|
|
164
163
|
const result = await Image.compress('file://path_of_file/image.jpg');
|
|
165
164
|
// OR
|
|
166
|
-
const result = await Image.compress('https://path_of_file/image.jpg',{
|
|
165
|
+
const result = await Image.compress('https://path_of_file/image.jpg', {
|
|
166
|
+
progressDivider: 10,
|
|
167
167
|
downloadProgress: (progress) => {
|
|
168
168
|
console.log('downloadProgress: ', progress);
|
|
169
|
-
}
|
|
169
|
+
},
|
|
170
170
|
});
|
|
171
171
|
```
|
|
172
172
|
|
|
@@ -195,7 +195,7 @@ const result = await Video.compress(
|
|
|
195
195
|
'file://path_of_file/BigBuckBunny.mp4',
|
|
196
196
|
{},
|
|
197
197
|
(progress) => {
|
|
198
|
-
|
|
198
|
+
console.log('Compression Progress: ', progress);
|
|
199
199
|
}
|
|
200
200
|
);
|
|
201
201
|
|
|
@@ -204,12 +204,13 @@ const result = await Video.compress(
|
|
|
204
204
|
const result = await Video.compress(
|
|
205
205
|
'https://example.com/video.mp4',
|
|
206
206
|
{
|
|
207
|
+
progressDivider: 10,
|
|
207
208
|
downloadProgress: (progress) => {
|
|
208
209
|
console.log('downloadProgress: ', progress);
|
|
209
|
-
}
|
|
210
|
+
},
|
|
210
211
|
},
|
|
211
212
|
(progress) => {
|
|
212
|
-
|
|
213
|
+
console.log('Compression Progress: ', progress);
|
|
213
214
|
}
|
|
214
215
|
);
|
|
215
216
|
```
|
|
@@ -227,7 +228,7 @@ const result = await Video.compress(
|
|
|
227
228
|
compressionMethod: 'manual',
|
|
228
229
|
},
|
|
229
230
|
(progress) => {
|
|
230
|
-
|
|
231
|
+
console.log('Compression Progress: ', progress);
|
|
231
232
|
}
|
|
232
233
|
);
|
|
233
234
|
```
|
|
@@ -288,6 +289,16 @@ const uploadResult = await backgroundUpload(
|
|
|
288
289
|
);
|
|
289
290
|
```
|
|
290
291
|
|
|
292
|
+
### Download File
|
|
293
|
+
|
|
294
|
+
```js
|
|
295
|
+
import { download } from 'react-native-compressor';
|
|
296
|
+
|
|
297
|
+
const downloadFileUrl = await download(url, (progress) => {
|
|
298
|
+
console.log('downloadProgress: ', progress);
|
|
299
|
+
});
|
|
300
|
+
```
|
|
301
|
+
|
|
291
302
|
# API
|
|
292
303
|
|
|
293
304
|
## Image
|
|
@@ -305,8 +316,13 @@ const uploadResult = await backgroundUpload(
|
|
|
305
316
|
if you want to compress images like **whatsapp** then make this prop `auto`. Can be either `manual` or `auto`, defines the Compression Method.
|
|
306
317
|
|
|
307
318
|
- ##### `downloadProgress?: (progress: number) => void;`
|
|
319
|
+
|
|
308
320
|
it is callback, only trigger when we pass image url from server
|
|
309
321
|
|
|
322
|
+
- ##### `progressDivider?: number` (default: 0)
|
|
323
|
+
|
|
324
|
+
we uses it when we use downloadProgress
|
|
325
|
+
|
|
310
326
|
- ###### `maxWidth: number` (default: 1280)
|
|
311
327
|
|
|
312
328
|
The maximum width boundary used as the main boundary in resizing a landscape image.
|
|
@@ -344,13 +360,18 @@ const uploadResult = await backgroundUpload(
|
|
|
344
360
|
if you want to compress videos like **whatsapp** then make this prop `auto`. Can be either `manual` or `auto`, defines the Compression Method.
|
|
345
361
|
|
|
346
362
|
- ##### `downloadProgress?: (progress: number) => void;`
|
|
363
|
+
|
|
347
364
|
it is callback, only trigger when we pass image url from server
|
|
348
365
|
|
|
366
|
+
- ##### `progressDivider?: number` (default: 0)
|
|
367
|
+
|
|
368
|
+
we uses it when we use downloadProgress/onProgress
|
|
369
|
+
|
|
349
370
|
- ###### `maxSize: number` (default: 640)
|
|
350
371
|
|
|
351
372
|
The maximum size can be height in case of portrait video or can be width in case of landscape video.
|
|
352
373
|
|
|
353
|
-
- ###### `bitrate:
|
|
374
|
+
- ###### `bitrate: number`
|
|
354
375
|
|
|
355
376
|
bitrate of video which reduce or increase video size. if compressionMethod will auto then this prop will not work
|
|
356
377
|
|
|
@@ -374,7 +395,7 @@ const uploadResult = await backgroundUpload(
|
|
|
374
395
|
|
|
375
396
|
## Background Upload
|
|
376
397
|
|
|
377
|
-
- ######
|
|
398
|
+
- ###### backgroundUpload: (url: string, fileUrl: string, options: FileSystemUploadOptions, onProgress?: ((writtem: number, total: number) => void) | undefined) => Promise< any >
|
|
378
399
|
|
|
379
400
|
- ###### ` FileSystemUploadOptions`
|
|
380
401
|
|
|
@@ -396,6 +417,10 @@ type FileSystemUploadOptions = (
|
|
|
396
417
|
};
|
|
397
418
|
```
|
|
398
419
|
|
|
420
|
+
### Download
|
|
421
|
+
|
|
422
|
+
- ##### download: ( fileUrl: string, downloadProgress?: (progress: number) => void, progressDivider?: number ) => Promise< string >
|
|
423
|
+
|
|
399
424
|
### Get Metadata Of Video
|
|
400
425
|
|
|
401
426
|
if you want to get metadata of video than you can use this function
|
package/android/build.gradle
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
buildscript {
|
|
2
|
+
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
|
|
3
|
+
def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Compressor_kotlinVersion"]
|
|
4
|
+
|
|
2
5
|
repositories {
|
|
3
6
|
google()
|
|
4
7
|
mavenCentral()
|
|
@@ -6,6 +9,8 @@ buildscript {
|
|
|
6
9
|
|
|
7
10
|
dependencies {
|
|
8
11
|
classpath "com.android.tools.build:gradle:7.2.1"
|
|
12
|
+
// noinspection DifferentKotlinGradleVersion
|
|
13
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
9
14
|
}
|
|
10
15
|
}
|
|
11
16
|
|
|
@@ -14,6 +19,7 @@ def isNewArchitectureEnabled() {
|
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
apply plugin: "com.android.library"
|
|
22
|
+
apply plugin: "kotlin-android"
|
|
17
23
|
|
|
18
24
|
|
|
19
25
|
def appProject = rootProject.allprojects.find { it.plugins.hasPlugin('com.android.application') }
|
|
@@ -96,12 +102,14 @@ repositories {
|
|
|
96
102
|
google()
|
|
97
103
|
}
|
|
98
104
|
|
|
105
|
+
def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
99
106
|
|
|
100
107
|
dependencies {
|
|
101
108
|
// For < 0.71, this will be from the local maven repo
|
|
102
109
|
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
|
|
103
110
|
//noinspection GradleDynamicVersion
|
|
104
111
|
implementation "com.facebook.react:react-native:+"
|
|
112
|
+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
105
113
|
implementation 'io.github.lizhangqu:coreprogress:1.0.2'
|
|
106
114
|
implementation 'com.github.numandev1:VideoCompressor:1a262bba37'
|
|
107
115
|
}
|