Changeset 41

Show
Ignore:
Timestamp:
02/24/07 22:45:16 (2 years ago)
Author:
simon
Message:

Allow RAW files. I can't believe that just worked. Closes #10.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Memories/Photo.pm

    r40 r41  
    33use File::Copy; 
    44use Archive::Any; 
    5 use File::Temp qw(tempdir); 
     5use File::Temp qw(tempdir tmpnam); 
    66use File::Path qw(rmtree); 
    77use File::Find; 
     
    1414use Image::Seek; 
    1515use constant PAGER_SYNTAX => "LimitXY"; 
    16 __PACKAGE__->columns(Essential => qw(id title uploader uploaded x y rating rated hit_count)); 
     16__PACKAGE__->columns(Essential => qw(id title uploader uploaded x y rating rated hit_count format)); 
    1717__PACKAGE__->untaint_columns(printable => [qw/title/]); 
    1818__PACKAGE__->columns(TEMP => qw/exif_object/); 
     
    9595    my $res = $mm->checktype_filename($filename); 
    9696    warn "$filename is a $res\n"; 
    97     if ($res =~ m{/x-zip} or $offered_name =~ /t(ar\.)?gz/i) { 
     97    if ($res =~ m{/x-zip} or $offered_name =~ /t(ar\.)?gz$/i) { 
    9898        return $self->upload_archive($r, $filename); 
     99    } elsif ($offered_name =~ /\.(raw|nef)/i) { 
     100        return $self->upload_raw($r, $filename, $offered_name); 
    99101    } elsif ($res =~ m{image/jpeg}) { 
    100102        return $self->upload_jpeg($r, $filename, $offered_name); 
     
    117119    rmtree($dir); 
    118120    return @results; 
     121} 
     122 
     123sub upload_raw { 
     124    my ($self, $r, $filename, $offered_name) = @_; 
     125    my $jpg = tmpnam().".jpg"; 
     126    system("dcraw -c $filename | convert - $jpg"); 
     127    my $photo = $self->upload_jpeg($r, $jpg, $offered_name); 
     128    $filename =~ /\.(.*)$/; 
     129    my $format = $1; 
     130    $photo->format($format); 
     131    # Put the file in place 
     132    copy($filename,  
     133         Memories->config->{data_store}."/".$photo->id.".".$format); 
     134    return $photo; 
    119135} 
    120136 
     
    223239} 
    224240 
    225 sub format {  
    226     "jpg" # For now 
    227 }  
    228  
    229241use Cache::MemoryCache; 
    230242use Image::Info qw(dim image_info); 
     
    336348    use File::Path; 
    337349    if ($is_url ne "url") {mkpath($path);} 
    338     $path .= $self->id.".".$self->format; 
     350    if ($scale or $is_url ne "url") {  
     351        $path .= $self->id.".jpg"; 
     352    } else { 
     353        $path .= $self->id.".".($self->format||"jpg"); 
     354    } 
    339355    return $path; 
    340356} 
  • trunk/memories.sql

    r9 r41  
    88    hit_count integer, 
    99    rating integer, 
    10     rated integer 
     10    rated integer, 
     11    format varchar(10) 
    1112); 
    1213