Difference between revisions of "Image Resizing"

From IndyMedia
Jump to: navigation, search
(Created page with " <syntaxhighlight> #!/bin/bash # this script takes a directory with some jpeg files in and # will scale the big ones and also remove all exif metadata # from the jpegs # you ...")
(No difference)

Revision as of 14:16, 15 June 2011

Invalid language.

You need to specify a language like this: <source lang="html4strict">...</source>

Supported languages for syntax highlighting:

4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic


# this script takes a directory with some jpeg files in and 
# will scale the big ones and also remove all exif metadata
# from the jpegs

# you can set an optional AGE vairable here, if it's set then only 
# files that are newer than AGE fill be looked at -- this is handy 
# if the script is running on a cron job, set it to a tile just longer
# than the cron interval, use mins for the value  


# Directory of images is passed to this script via $1, if it's 
# not then we assume that we should run in the current directory.
if [[ $1 ]]; then
  # change to the directory where the images are
  cd $1

# get a list of the files, omitting ones that have already been scaled
#FILES=`ls --file-type="jpg" --ignore="*\.scaled\.jpg$"`
if [[ $AGE ]]; then
  FILES=$(find -P $DIR -type f -cmin -$AGE -name '*.jpg' ! -name '*\.indyscaled\.jpg')
  FILES=$(find -P $DIR -type f -name '*.jpg' ! -name '*\.indyscaled\.jpg')

for file in $FILES; do
#echo file: $file

  # check the file exists
  if [[ -f $file ]]; then

    # check if we can write to the file
    if [[ -w $file ]]; then

      # check if it's really a jpg
      TYPE=$(file -bi $file)
      if [[ $TYPE = "image/jpeg; charset=binary" ]]; then

         # remove exif metadata preserving the image date
         DATE=$(date -r $file)
         exiv2 rm "$file"

         # generate scaled versions of images if they are greater than 640px wide 
         # or 1024px high, maintaining the aspect ratio
         WIDTH=$(identify -format %w $file)
         if [[ $WIDTH > 640 ]]; then
            echo scalling $file
            convert "$file" -resize 640x1024 -format jpeg -quality 80 "$file.indyscaled.jpg"
            touch -d "$DATE" "$file.indyscaled.jpg"

         # reset the file date
         touch -d "$DATE" "$file"


        echo $file is not a jpeg



      echo $file is not writable



    echo $file does not exist