Skip to content

Commit

Permalink
Don't transpose unless it's a .jpg.
Browse files Browse the repository at this point in the history
We still have other transpose woes, but that prevents mangling on random
images that probably don't have a concept of rotation.
  • Loading branch information
icculus committed Jun 21, 2016
1 parent 7a4c25b commit 17f070a
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions archive_imessage.pl
Expand Up @@ -197,12 +197,14 @@ sub load_attachment {
my $is_image = $mimetype =~ /\Aimage\//;
my $is_video = $mimetype =~ /\Avideo\//;
if ((defined $attachment_shrink_percent) && ($is_image || $is_video)) {
my $fmt = ($mimetype eq 'image/jpeg') ? '-f mjpeg' : '';
my $is_jpeg = $mimetype eq 'image/jpeg';
my $fmt = $is_jpeg ? '-f mjpeg' : '';
my $transpose = $is_jpeg ? 'transpose=1,' : '';
my $fract = $attachment_shrink_percent / 100.0;
my $basefname = $origfname;
$basefname =~ s#.*/##;
my $outfname = "$maildir/tmp/imessage-chatlog-tmp-$$-attachment-shrink-$basefname";
my $cmdline = "ffmpeg $fmt -i '$hashedfname' -vf \"scale='trunc(iw*$fract)+mod(trunc(iw*$fract),2)':'trunc(ih*$fract)+mod(trunc(ih*$fract),2)'\" '$outfname' 2>/dev/null";
my $cmdline = "ffmpeg $fmt $transpose -i '$hashedfname' -vf \"${transpose}scale='trunc(iw*$fract)+mod(trunc(iw*$fract),2)':'trunc(ih*$fract)+mod(trunc(ih*$fract),2)'\" '$outfname' 2>/dev/null";
dbgprint("shrinking attachment: $cmdline\n");
die("ffmpeg failed ('$cmdline')") if (system($cmdline) != 0);
read_file($outfname, buf_ref => $fdataref, binmode => ':raw', err_mode => 'carp');
Expand Down Expand Up @@ -1055,8 +1057,9 @@ sub talk_gap {
} else {
$fnameimg =~ s#.*/##;
my $outfname = "$maildir/tmp/imessage-chatlog-tmp-$$-$msgid-$fnameimg.jpg";
my $fmt = ($mimetype eq 'image/jpeg') ? '-f mjpeg' : '';
my $transpose = $is_image ? 'transpose=1,' : '';
my $is_jpeg = $mimetype eq 'image/jpeg';
my $fmt = $is_jpeg ? '-f mjpeg' : '';
my $transpose = $is_jpeg ? 'transpose=1,' : '';
my $cmdline = "ffmpeg $fmt -i '$hashedfname' -frames 1 -vf '${transpose}scale=235:-1' '$outfname' 2>/dev/null";
dbgprint("generating thumbnail: $cmdline\n");
die("ffmpeg failed ('$cmdline')") if (system($cmdline) != 0);
Expand Down

0 comments on commit 17f070a

Please sign in to comment.