To contribute please read (CONTRIBUTION.md)
This tool is used to
- convert
.HEIC
image format to.jpeg
/.png
by utilizing the NPM package heic-convert - convert
.png
/.jpeg
/.jpg
image format to.webp
by utilizing the NPM package sharp
The equipment that must be prepared is only NodeJS. If NodeJS is already installed, download all the dependencies needed by typing
npm install --production
To clear all result convert you can use
node app clear
Or read more [How Clear Result Files]
! Previously fill the ./import
folder with image files according to the required extension
├── import
| ├── IMG-5892.HEIC
| ├── IMG-5893.HEIC
│ └── ...
To convert image from HEIC to JPEG or PNG
To convert JPEG, PNG, JPG to WEBP
node app convert <-f or --from> <..input_ext> <-t or --to> <..output_ext> --name <..custom_name_file>
Descriptions:
- <..input_ext> : extension format input file on
./import
you can fieldheic
- <..output_ext> : extension format output file on
./export
you can fieldjpeg
orpng
- --name <name_file> : (optional) custom output name file
node app convert -f heic -t jpeg
Output:
Total images: 2
If your file is small in size, it won't take much time to process.
Process (0/2) Starting
Process (1/1) Please Wait...
{
file: {
input: './import/IMG_5892.HEIC',
output: './export/convert-heic/IMG-1-20240912-03.37.43.796.jpeg'
},
size: { before: '1.04 MB', after: '2.48 MB' }
}
Process (2/0) Completed
{
file: {
input: './import/IMG_5893.HEIC',
output: './export/convert-heic/IMG-2-20240912-03.37.49.146.jpeg'
},
size: { before: '4.75 MB', after: '7.65 MB' }
}
Success: Conversion has been successful
{ start: '03:37:40', end: '03:37:49', duration: '9s' }
├── export/convert-heic
| ├── IMG-1-20240912-03.37.43.796.jpeg
| ├── IMG-2-20240912-03.37.49.146.jpeg
│ └── ...
node app convert -f heic -t png
Output:
Total images: 2
If your file is small in size, it won't take much time to process.
Process (0/2) Starting
Process (1/1) Please Wait...
{
file: {
input: './import/IMG_5892.HEIC',
output: './export/convert-heic/IMG-1-20240912-03.39.28.51.png'
},
size: { before: '1.04 MB', after: '13.21 MB' }
}
Process (2/0) Completed
{
file: {
input: './import/IMG_5893.HEIC',
output: './export/convert-heic/IMG-2-20240912-03.39.34.95.png'
},
size: { before: '4.75 MB', after: '28.86 MB' }
}
Success: Conversion has been successful
{ start: '03:39:23', end: '03:39:34', duration: '11s' }
├── export/convert-heic
| ├── IMG-1-20240912-03.39.28.51.png
| ├── IMG-2-20240912-03.39.34.95.png
│ └── ...
Command: node app convert -f heic -t ..jpeg/png --name ..custom_name_file
Example:
node app convert -f heic -t jpeg --name hut-ri-79
Output:
Total images: 2
If your file is small in size, it won't take much time to process.
Process (0/2) Starting
Process (1/1) Please Wait...
{
file: {
input: './import/IMG_5892.HEIC',
output: './export/convert-heic/hut-ri-79-1-20240912-03.40.59.326.jpeg'
},
size: { before: '1.04 MB', after: '2.48 MB' }
}
Process (2/0) Completed
{
file: {
input: './import/IMG_5893.HEIC',
output: './export/convert-heic/hut-ri-79-2-20240912-03.41.04.556.jpeg'
},
size: { before: '4.75 MB', after: '7.65 MB' }
}
Success: Conversion has been successful
{ start: '03:40:55', end: '03:41:04', duration: '9s' }
├── export/convert-heic
| ├── hut-ri-79-1-20240912-03.40.59.326.jpeg
| ├── hut-ri-79-2-20240912-03.41.04.556.jpeg
│ └── ...
node app convert <-f or --from> <..input_ext> <-t or --to> webp <..options>
Descriptions:
- <..input_ext> : extension format input file on
./import
you can field [png, jpeg, jpg] - <..options> : (optional) custom quality and custom output file name
- --quality <1,2,3, ..100> : custom quality image, default=80
- --name <name_file> : custom output name file
- --option <1,2,3, ..100> <name_file> : custom quality and output name file
node app convert -f png -t webp
Output:
If your file is small in size, it won't take much time to process.
Process (0/2) Starting
Process (1/1) Please Wait...
{
file: {
input: './import/IMG-2-20240910-17.41.36.373.png',
output: './export/convert-webp/IMG-1-20240912-04.19.16.612.webp'
},
size: { before: '28.86 MB', after: '4.08 MB', compressed: '85.85%' }
}
Process (2/0) Completed
{
file: {
input: './import/transparent-logo-vector-8.png',
output: './export/convert-webp/IMG-2-20240912-04.19.18.884.webp'
},
size: { before: '0.12 MB', after: '0.05 MB', compressed: '56.10%' }
}
Success: Conversion has been successful
{ start: '04:19:16', end: '04:19:18', duration: '2s' }
├── export/convert-webp
| ├── IMG-1-20240912-04.19.16.612.webp
| ├── IMG-2-20240912-04.19.18.884.webp
│ └── ...
node app convert -f jpeg -t webp
Total images: 1
If your file is small in size, it won't take much time to process.
Process (0/1) Starting
Process (1/0) Completed
{
file: {
input: './import/OIP.jpeg',
output: './export/convert-webp/IMG-1-20240912-04.20.47.925.webp'
},
size: { before: '0.02 MB', after: '0.01 MB', compressed: '29.30%' }
}
Success: Conversion has been successful
{ start: '04:20:47', end: '04:20:47', duration: '0s' }
├── export/convert-webp
| ├── IMG-1-20240912-04.19.16.612.webp
| ├── IMG-2-20240912-04.19.18.884.webp
│ └── ...
node app convert -f jpg -t webp
Output:
Total images: 1
If your file is small in size, it won't take much time to process.
Process (0/1) Starting
Process (1/0) Completed
{
file: {
input: './import/IMG_20240816_150159_725.jpg',
output: './export/convert-webp/IMG-1-20240912-04.22.54.29.webp'
},
size: { before: '3.49 MB', after: '0.71 MB', compressed: '79.54%' }
}
Success: Conversion has been successful
{ start: '04:22:54', end: '04:22:55', duration: '1s' }
├── export/convert-webp
| ├── IMG-1-20240912-04.22.54.29.webp
│ └── ...
Command: node app convert -f ..png/jpeg/jpg -t webp --quality ..1,2,3,etc,default=80
Example:
node app convert -f jpg -t webp --quality 50
Output:
Total images: 1
If your file is small in size, it won't take much time to process.
Process (0/1) Starting
Process (1/0) Completed
{
file: {
input: './import/IMG_20240816_150159_725.jpg',
output: './export/convert-webp/IMG-1-20240912-04.28.38.36.webp'
},
size: { before: '3.49 MB', after: '0.38 MB', compressed: '89.06%' }
}
Success: Conversion has been successful
{ start: '04:28:38', end: '04:28:39', duration: '1s' }
├── export/convert-webp
| ├── IMG-1-20240912-04.28.38.36.webp
│ └── ...
Command: node app convert -f ..png/jpeg/jpg -t webp --name <custom_name_file>
Example:
node app convert -f jpg -t webp --name hut-ri-79
Output:
Total images: 1
If your file is small in size, it won't take much time to process.
Process (0/1) Starting
Process (1/0) Completed
{
file: {
input: './import/IMG_20240816_150159_725.jpg',
output: './export/convert-webp/hut-ri-79-1-20240912-04.31.25.200.webp'
},
size: { before: '3.49 MB', after: '0.71 MB', compressed: '79.54%' }
}
Success: Conversion has been successful
{ start: '04:31:25', end: '04:31:26', duration: '1s' }
├── export/convert-webp
| ├── hut-ri-79-1-20240912-04.31.25.200.webp
│ └── ...
Command: node app convert -f ..png/jpeg/jpg -t webp --option <1,2,3,..100> <custom_name_file>
Example:
node app convert -f jpg -t webp --option 30 hut-ri-79
Output:
Total images: 1
If your file is small in size, it won't take much time to process.
Process (0/1) Starting
Process (1/0) Completed
{
file: {
input: './import/IMG_20240816_150159_725.jpg',
output: './export/convert-webp/hut-ri-79-1-20240912-04.35.09.718.webp'
},
size: { before: '3.49 MB', after: '0.26 MB', compressed: '92.42%' }
}
Success: Conversion has been successful
{ start: '04:35:09', end: '04:35:11', duration: '2s' }
├── export/convert-webp
| ├── hut-ri-79-1-20240912-04.35.09.718.webp
│ └── ...
To duplicate an image you must have 1 file with the format [HEIC, jpg, jpeg, png] in ./import
.
node app duplicate <..ext> <..count_loops>
Descriptions:
- <..ext> : image extension format you can use HEIC, jpg, jpeg, or png
- <..count_loops> : (optional) how many images you want to duplicate, default = 1
node app duplicate jpg
Output:
Available Files:
[1] IMG_20240816_150159_725.jpg
Selected files: IMG_20240816_150159_725.jpg
Total duplicate: 1
Duplicate: export/duplicate-images/IMG_1_20240910-16.11.05.757_duplicated.jpg
node app duplicate jpg 7
Output:
Available Files:
[1] IMG_20240816_150159_725.jpg
Selected files: IMG_20240816_150159_725.jpg
Total duplicate: 7
Duplicate: export/duplicate-images/IMG_1_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_2_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_3_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_4_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_6_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_5_20240910-16.13.13.670_duplicated.jpg
Duplicate: export/duplicate-images/IMG_7_20240910-16.13.13.670_duplicated.jpg
This command can automatically delete all conversions that you have done in the ./export
folder.
node app clear
node app clear
Output:
success: Complete clear folder export
Deleting... on folder ./export/duplocate-images
Deleting... on folder ./export/compress-images
Deleting... on folder ./export/convert-webp
Deleting... on folder ./export/convert-heic
Delete: IMG-1-20240912-00.17.59.449.png
Delete: IMG-1-20240912-00.22.45.390.png
Delete: IMG-2-20240912-00.18.05.604.png
Delete: IMG-2-20240912-00.22.51.554.png
Delete: IMG-1-20240912-03.37.43.796.jpeg
...