Add ImageMagick and file transfer tutorial

This commit is contained in:
Jose 2023-08-21 22:26:22 -03:00
parent fee6466a40
commit feb95d5197
3 changed files with 152 additions and 7 deletions

View File

@ -34,7 +34,7 @@ opportunity to learn about computers, files, directories and programs.
* [[./tutorial/files_directories.org][Learning about files and directories]]
* [[./tutorial/rsync.org][Using rsync to copy files]]
* [[./tutorial/search_files.org][Searching for files in the system]]
* [[./tutorial/diff.org][Comparing two files or directories: 'diff']]
* [[./tutorial/diff.org][Comparing two files or directories: 'diff']]
* [[./tutorial/diff_patch.org][Comparing two files and create a unified version: diff and patch]]
* [[./tutorial/dd_command_flash_usb.org][Using dd command to flash usb]]
* [[./tutorial/compress_pdf.org][Compress a pdf file]]
@ -42,10 +42,14 @@ opportunity to learn about computers, files, directories and programs.
* [[./tutorial/pacman.org][Use package manager in Parabola GNU-linux: verify packages in cache]]
* [[./tutorial/removing_packages.org][Removing packages in Parabola GNU-Linux]]
** Secure shell ssh and file transfer
* [[./tutorial/copy_server.org][Transfering files between machines]]
** Work with images
* [[./tutorial/image_size_reduction.org][Reduce image quality and size from terminal]]
** Disk space utilization and manipulation
* [[./tutorial/ncdu.org][Exploring disk space with 'ncdu']]

64
tutorial/copy_server.org Normal file
View File

@ -0,0 +1,64 @@
#+date: 2023-08-20
#+options: toc:nil num:nil author:nil
* Transfering files
Let's say you want to transfer files, images or directories between a local
machine and a server. What could be a good option?
There are multiple free software options to transfer file between machines:
* [[https://wiki.archlinux.org/title/Rsync][rsync]]
* [[https://man.archlinux.org/man/sftp.1.en][sftp]] (secury file transfer protocol)
* [[https://wiki.archlinux.org/title/SCP_and_SFTP][scp]] (secure copy protocol)
** rsync
For example: transfering all the ~.jpg~ files in the directory to a server:
#+begin_example sh
rsync -a -P -e "ssh -p 2222" ./*.jpg root@186.76.90.145:/root/img/
#+end_example
** scp
** Using ~sftp~ to copy files
~sftp~ can be used to transfer files from a local machine to a server. The
protocol allows to access the server, visualize, manipulate and transfer
files from and to a server. You need to configure ~ssh~ access to the
server from your local machine.
A server can be accessed from a local machine following this logic:
#+begin_example sh
sftp -P 2222 root@186.76.90.145
#+end_example
The command ~sftp~ followed by the port and user@ip_address.
After accessing the server, files can be download from the server:
#+begin_example sh
sftp> get file_in_server
#+end_example
You can also transfer files to the server:
#+begin_example sh
sftp> put file_in_local_machine
#+end_example
To exit from ~sftp~ use:
#+begin_example sh
sftp> put file_in_local_machine
#+end_example
There are additional options to use ~sftp~. Check the manual to know more about:
#+begin_example sh
info sftp
#+end_example
** References

View File

@ -3,14 +3,32 @@
* Use imagemagick to manipulate images
[[https://imagemagick.org/][ImageMagick]] is a suite of tools used for digital image edition and manipulation.
The tools can be used in the command line (~cli~).
There are multiple functionalities avaliable in ImageMagick. Commands like ~convert~,
~mogrify~ and ~identify~ are just some of the useful tools available.
** Using the ~convert~ command
Converting multiple ~jpg~ files into lower size images:
First, [][cd] into the directory containing all the images
#+begin_example sh
cd directory
#+end_example
Then use ~convert~ to resize all the 'jpg' files within the directory:
#+begin_example sh
convert '*.jpg' -set filename:fn '%[basename]-small' -resize 960x640 '%[filename:fn].jpg'
#+end_example
convert <INPUT_FILE> -quality 10% <OUTPUT_FILE>
Here the '%[basename]-small' will copy original files, resize and rename including
the suffix "small" to the original name.
Reduce quality using convert (the command is similar to the previous one, but
it uses ~-quality~ instead of ~-resize~)
#+begin_example sh
convert '*.jpg' -set filename:fn '%[basename]-small' -quality 50% '%[filename:fn].jpg'
@ -18,17 +36,29 @@ convert <INPUT_FILE> -quality 10% <OUTPUT_FILE>
** Using mogrify
~mogrofy~ can be used for similar purposes.
Let's check som images in a directory to verify how much those images can be
modified.
Change directory use the commands in the same place were the images are included,
e.g:
#+begin_example sh
cd directory
#+end_example
Counting number of ~.jpg~ images in a directory:
#+begin_example sh
ls -1U DIR_NAME | wc -l
#+end_example
Output:
Verify the output:
75
75
Verifying the images weight:
Verifying the images weight of all the images:
#+begin_example sh
du -h
@ -48,6 +78,8 @@ Output:
42M
Reduce the quality of all the images within the directory:
#+begin_example sh
mogrify -quality 80% *.jpg
#+end_example
@ -62,9 +94,54 @@ Output:
12M
** Remove some metada from images
[[https://imagemagick.org/script/command-line-options.php#strip][`mogrify -strip`]]can be used to remove some metada from the images.
First you can check the image metada using the command ~identify~ from Imagemagick.
#+begin_example sh
identify -verbose image.jpg
#+end_example
This command will print an output like this:
# Filename: image.jpg
# Permissions: rw-r--r--
# Format: JPEG (Joint Photographic Experts Group JFIF format)
# Mime type: image/jpeg
# Class: DirectClass
# Geometry: 960x640+0+0
# Resolution: 72x72
# Print size: 13.3333x8.88889
# Units: PixelsPerInch
# Colorspace: sRGB
# Type: TrueColor
# Base type: Undefined
# Endianness: Undefined
# Depth: 8-bit
# Channels: 3.0
# Channel depth:
# Red: 8-bit
# Green: 8-bit
# Blue: 8-bit
# Channel statistics:
# Pixels: 614400
# ...
# ...
# Version: ImageMagick 7.1.1-12 Q16-HDRI x86_64 21239 https://imagemagick.org
You can use ~mogrify~ to remove metada from one or multiple images using
something like:
#+begin_example sh
mogrify -strip ./image.jpg # one image
mogrify -strip ./*.jpg # modifiyng all 'jpg' files in directory
#+end_example
** References
- [[https://askubuntu.com/questions/1354205/imagemagick-convert-on-a-multiple-files][Imagemagick to convert multiple files]]
- [[https://imagemagick.org/][Imagemagick web site]]
- [[https://www.digitalocean.com/community/tutorials/reduce-file-size-of-images-linux][Digital ocean tutorial]]