aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/Reports.pm1
-rw-r--r--perllib/FixMyStreet/App/Model/PhotoSet.pm31
-rw-r--r--perllib/FixMyStreet/ImageMagick.pm6
3 files changed, 22 insertions, 16 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
index e3a425632..20801e0cf 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
@@ -4,6 +4,7 @@ use namespace::autoclean;
BEGIN { extends 'Catalyst::Controller'; }
+use utf8;
use List::MoreUtils 'uniq';
use FixMyStreet::SMS;
use Utils;
diff --git a/perllib/FixMyStreet/App/Model/PhotoSet.pm b/perllib/FixMyStreet/App/Model/PhotoSet.pm
index 76a287e71..85e457856 100644
--- a/perllib/FixMyStreet/App/Model/PhotoSet.pm
+++ b/perllib/FixMyStreet/App/Model/PhotoSet.pm
@@ -8,6 +8,7 @@ use Scalar::Util 'openhandle', 'blessed';
use Image::Size;
use IPC::Cmd qw(can_run);
use IPC::Open3;
+use Try::Tiny;
use FixMyStreet;
use FixMyStreet::ImageMagick;
@@ -149,7 +150,9 @@ has ids => ( # Arrayref of $fileid tuples (always, so post upload/raw data proc
}
# we have an image we can use - save it to storage
- $photo_blob = FixMyStreet::ImageMagick->new(blob => $photo_blob)->shrink('2048x2048')->as_blob;
+ $photo_blob = try {
+ FixMyStreet::ImageMagick->new(blob => $photo_blob)->shrink('2048x2048')->as_blob;
+ } catch { $photo_blob };
return $self->storage->store_photo($photo_blob);
}
@@ -201,18 +204,20 @@ sub get_image_data {
}
my $im = FixMyStreet::ImageMagick->new(blob => $image->{data});
- my $photo;
- if ( $size eq 'tn' ) {
- $photo = $im->shrink('x100');
- } elsif ( $size eq 'fp' ) {
- $photo = $im->crop;
- } elsif ( $size eq 'og' ) {
- $photo = $im->crop('1200x630');
- } elsif ( $size eq 'full' ) {
- $photo = $im
- } else {
- $photo = $im->shrink($args{default} || '250x250');
- }
+ my $photo = try {
+ if ( $size eq 'tn' ) {
+ $im->shrink('x100');
+ } elsif ( $size eq 'fp' ) {
+ $im->crop;
+ } elsif ( $size eq 'og' ) {
+ $im->crop('1200x630');
+ } elsif ( $size eq 'full' ) {
+ $im
+ } else {
+ $im->shrink($args{default} || '250x250');
+ }
+ };
+ return unless $photo;
return {
data => $photo->as_blob,
diff --git a/perllib/FixMyStreet/ImageMagick.pm b/perllib/FixMyStreet/ImageMagick.pm
index d9f643801..ec99fd877 100644
--- a/perllib/FixMyStreet/ImageMagick.pm
+++ b/perllib/FixMyStreet/ImageMagick.pm
@@ -64,7 +64,7 @@ sub shrink {
my ($self, $size) = @_;
return $self unless $self->image;
my $err = $self->image->Scale(geometry => "$size>");
- throw Error::Simple("resize failed: $err") if "$err";
+ die "resize failed: $err" if "$err";
$self->_set_width_and_height();
return $self->strip;
}
@@ -76,9 +76,9 @@ sub crop {
$size //= '90x60';
return $self unless $self->image;
my $err = $self->image->Resize( geometry => "$size^" );
- throw Error::Simple("resize failed: $err") if "$err";
+ die "resize failed: $err" if "$err";
$err = $self->image->Extent( geometry => $size, gravity => 'Center' );
- throw Error::Simple("resize failed: $err") if "$err";
+ die "resize failed: $err" if "$err";
$self->_set_width_and_height();
return $self->strip;
}