diff options
Diffstat (limited to 'bin/fixmystreet.com/rotate-photos')
-rwxr-xr-x | bin/fixmystreet.com/rotate-photos | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/bin/fixmystreet.com/rotate-photos b/bin/fixmystreet.com/rotate-photos new file mode 100755 index 000000000..7b8109d65 --- /dev/null +++ b/bin/fixmystreet.com/rotate-photos @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w + +# rotate-photos: +# Manaully fix any already-uploaded photos that are orientated wrongly. +# +# Copyright (c) 2008 UK Citizens Online Democracy. All rights reserved. +# Email: matthew@mysociety.org. WWW: http://www.mysociety.org +# +# $Id: rotate-photos,v 1.1 2008-12-11 15:18:40 matthew Exp $ + +use strict; +require 5.8.0; + +# Horrible boilerplate to set up appropriate library paths. +use FindBin; +use lib "$FindBin::Bin/../perllib"; +use lib "$FindBin::Bin/../commonlib/perllib"; + +use Digest::SHA qw(sha1_hex); + +use Utils; +use mySociety::Config; +use mySociety::DBHandle qw(dbh select_all); +use mySociety::TempFiles; + +BEGIN { + mySociety::Config::set_file("$FindBin::Bin/../conf/general"); + mySociety::DBHandle::configure( + Name => mySociety::Config::get('FMS_DB_NAME'), + User => mySociety::Config::get('FMS_DB_USER'), + Password => mySociety::Config::get('FMS_DB_PASS'), + Host => mySociety::Config::get('FMS_DB_HOST', undef), + Port => mySociety::Config::get('FMS_DB_PORT', undef) + ); +} + +my $r = select_all("select id, photo from problem where service='iPhone'"); +foreach (@$r) { + my $id = $_->{id}; + my $photo = $_->{photo}; + + if (length($photo) == 40) { + # If photo field contains a hash + my $filename = mySociety::Config::get('UPLOAD_DIR') . "$photo.jpeg"; + `jhead -autorot $filename`; + } else { + my ($fh, $filename) = mySociety::TempFiles::named_tempfile('.jpeg'); + print $fh $photo; + close $fh; + my $out = `jhead -autorot $filename`; + if ($out) { + open(FP, $filename) or die $!; + $photo = join('', <FP>); + close FP; + my $fileid = sha1_hex($photo); + rename $filename, mySociety::Config::get('UPLOAD_DIR') . "$fileid.jpeg"; + dbh()->do('UPDATE problem SET photo=? WHERE id=?', {}, $fileid, $id); + dbh()->commit(); + } else { + unlink $filename; + } + } +} + |