Fran's site and blog

Blog

Extrae todas las fotos de un powerpoint (desde Linux)

Posted by lapaginadefran on October 13, 2009 at 2:03 AM

En esta página http://forumubuntusoftware.info/viewtopic.php?f=7&t=1995 hay un script para la shell bash que extrae de un powerpoint las fotos/imágenes que tiene. Porque a veces nos mandan presentaciones de preciosos paisajes o tías buenas que merece la pena conservar.Para el que tenga instalado en gnome el menú contextual para ejecutar scripts sobre un archivo, lo tiene especialmente fácil. Según dice el foro, conociendo las cabeceras de otros tipos de archivo, este mismo script puede ser adaptado para usarlo con otros archivos que contengan fotos, como podrían ser los pdf. Aunque en linux también tenemos un programa (si norecuerdo mal), que extrae las fotos de un pdf.  


#!/bin/bash

# Rip image files from PPS files

# By Eldad Zack

 

for fn in "[email protected]"

do

   echo Ripping ${fn} ...

   

   declare -a pos

   posindex=0

   

   poslist=$(hexdump -v -e '1/1 "%02x"' "${fn}" |

         sed 's/.ffd8ffe00010/\nMARKERMARKER/g' |

         grep -abo MARKERMARKER |

          cut -f1 -d':');

         

   for x in $poslist

   do

      ((posindex++))

      ((y=x/2))

      pos[$posindex]=${y}

   done

   

   pos[$((posindex+1))]=$(stat -c '%s' "${fn}")

   

   for ((x=1; x<$posindex; x++))

   do

      echo "   pos $x ${pos[$x]} to ${pos[$((x+1))]}"

   

      #count=$((${pos[$((x+1))]}-${pos[$x]}))

      count=$((${pos[$posindex]}-${pos[$x]}))

      fnum=$(printf "%04g" $x);

   

      dd if="${fn}" ibs=1 skip=${pos[$x]} count=$count 2>/dev/null | convert - "${fn}.$fnum.jpg"

      

      if [[ $(stat -c %s "${fn}.$fnum.jpg") == 0 ]];

      then

         echo "[size zero] rm ${fn}.$fnum.jpg"

         rm ${fn}.$fnum.jpg

      fi

 

   done

   

   echo " + $(ls "${fn}"*jpg | wc -l | sed 's/ \+//g') files ripped."

   

   #ffd8ffe000104a464946 JFIF

   

   

done 

Categories: Inform├?┬ítica, Mi Ubuntu Linux personalizado, Linux/Darwin

Post a Comment

Oops!

Oops, you forgot something.

Oops!

The words you entered did not match the given text. Please try again.

Already a member? Sign In

0 Comments