png til jpg

Dette forum bruges på EGET ANSVAR til at lege med scripts og andre ting med risiko for at beskadige sit eget og andres systemer.
thj01
Indlæg: 2667
Tilmeldt: 21. nov 2006, 10:06
Geografisk sted: Fredericia

png til jpg

Indlæg af thj01 »

Jeg har ofte brug for at konvertere en del png billeder til jpg, da png er bedrere at redigere i (loseless) end jpg. Så derfor har jeg lavet et script til at løse det for mig. Der er en forklaring på brug i starten af scriptet.

I teorien kommer jeg til at spare tid på det når jeg skal sende billeder videre ... men i praksis så tror jeg mit arbejde med at få det lavet gør, at der går et par år før der er en reel tidsgevinst ;)

Jeg har ihvertfald lært noget om bash ...


Kode: Vælg alt

#!/bin/bash

#~ png to jpg converter (imagemagick) made by Thomas Jensen
#~
#~ Usage: conv_png_jpg.sh -n <zip-filename> -p <pixelsize>
#~
#~        Set pixelsize to 0 for original size
#~
function convert_pictures() {
  start=$(date +%s)
  n=0
   for file in *.png; do
    filename=${file%.*}      
    if [[ $fullsize == 1 ]]; then
      pixel="full"
      convert "${filename}.png" -quality 90 "${filename}_${pixel}.jpg" &>/dev/null
     else
      convert "${filename}.png" -resize ${pixel}x${pixel} -quality 90 "${filename}_${pixel}.jpg" &>/dev/null
    fi
  ((n++))
  done
  end=$(date +%s)
  runtime=$((end-start))
  printf "\n$n filer konverteret på $runtime sekunder\n\n"
  zip -q ${zipfilename}_$(date +%Y%m%d)_${pixel}.zip *.jpg
  ls *.jpg
  rm *.jpg
  printf "\nZipped to: $(ls *.zip)\n\n"

}

function error_message(){
  printf "\nInvalid option(s). Command should be:\n"
  printf "\n\tconv_png_jpg.sh -n <zip-filename> -p <pixelsize> \n\n"
  printf "\tSet pixelsize to 0 for original size \n\n"
}


if [ -z "$1" ]; then
   fullsize=1
  zipfilename=Pictures
  convert_pictures #calling function
  exit 0
elif [ "$1" != "-n" ] ; then
  error_message
  exit 1
else    # Flags section
   while getopts "n:p:" opt; do
      case $opt in
         n)
            zipfilename=$OPTARG
            ;;
         p)
        if [[ $OPTARG == 0 ]]; then
          fullsize=1
        else
          pixel=$OPTARG
         
        fi
        convert_pictures #calling function
        exit 0
          ;;
         \?)
            error_message 
            exit 1
            ;;
      esac
  done


fi
convert_pictures    

exit 0
Forfatter til Ubuntuguiden: http://www.vidas.dk/guides/ubuntuguiden.html

Kører LTS udgaverne.

"It's always easy if you know how to do it."