diff options
author | Matthew Somerville <matthew@mysociety.org> | 2016-04-27 14:22:53 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2016-05-03 13:46:17 +0100 |
commit | d63f2c65cb8f2eb2e94f8727780cdb320527bbf6 (patch) | |
tree | d12addbbc14f7e82dbc2440151b7be88b47ccdd4 | |
parent | ac39951581a0eefe069c8a707bb89977227d0bce (diff) |
Switch external jhead call to use IPC::Open3.
-rw-r--r-- | perllib/FixMyStreet/App/Model/PhotoSet.pm | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Model/PhotoSet.pm b/perllib/FixMyStreet/App/Model/PhotoSet.pm index b18460821..1eb4c0070 100644 --- a/perllib/FixMyStreet/App/Model/PhotoSet.pm +++ b/perllib/FixMyStreet/App/Model/PhotoSet.pm @@ -8,6 +8,8 @@ use if !$ENV{TRAVIS}, 'Image::Magick'; use Scalar::Util 'openhandle', 'blessed'; use Digest::SHA qw(sha1_hex); use Image::Size; +use IPC::Cmd qw(can_run); +use IPC::Open3; use MIME::Base64; has c => ( @@ -139,7 +141,13 @@ has images => ( # AoA of [$fileid, $binary_data] tuples # get the photo into a variable my $photo_blob = eval { my $filename = $upload->tempname; - my $out = `jhead -se -autorot $filename 2>&1`; + my $out; + if (can_run('jhead')) { + my $pid = open3(undef, my $stdout, undef, 'jhead', '-se', '-autorot', $filename); + $out = join('', <$stdout>); + waitpid($pid, 0); + close $stdout; + } unless (defined $out) { my ($w, $h, $err) = Image::Size::imgsize($filename); die _("Please upload a JPEG image only") . "\n" if !defined $w || $err ne 'JPG'; |