Changeset 4408 for extensions


Ignore:
Timestamp:
Dec 2, 2009, 5:28:36 PM (14 years ago)
Author:
ronosman
Message:

Feature 1290 added : original photo preview

Location:
extensions/pLoader/trunk/src/Uploader
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/src/Uploader/GUI/wxApp.pm

    r4268 r4408  
    8383          wx_thumb_dir
    8484          resized_dir
    85           preview_dir
    8685          userdata_dir
    8786          resized_dir
     
    126125   
    127126    $self->version(
    128         '2.0.5b'
     127        '2.0.5C'
    129128    );
    130129   
    131130    # to check if we can use stored cache
    132131    $self->imagelist_version(
    133         '7'
     132        '8'
    134133    );
    135134
     
    463462        thumb_size       => 120,
    464463        site_thumb_dir   => $self->thumb_dir,
    465         wx_thumb_size    => 120,
     464        wx_thumb_size    => 100,
    466465        wx_thumb_dir     => $self->wx_thumb_dir,
    467         preview_ratio    => 25,
    468         preview_dir      => $self->preview_dir,
    469466        resize_w         => 800,
    470467        resize_h         => 600,
     
    474471        blur             => 0.9,
    475472        quality          => 95,
    476         wx_quality       => 80,
     473        wx_quality       => 90,
    477474        th_quality       => 90,
    478475        auto_rotate      => 1,
     
    480477        interlace        => 'Line',
    481478        create_resized   => 1,
    482         use_exif_preview => 1,
    483479        prefix           => 'TN',
    484480        count            => 0,
     
    623619    mkdir $resizedir unless -d $resizedir ;
    624620    $self->resized_dir($resizedir);
    625 
    626     my $previewdir = File::Spec->catfile($self->userdata_dir, 'preview');
    627     mkdir $previewdir unless -d $previewdir ;
    628     $self->preview_dir($previewdir);
    629 
    630        
    631621}
    632622
  • extensions/pLoader/trunk/src/Uploader/GUI/wxFrameAUI.pm

    r4322 r4408  
    3636             wxBITMAP_TYPE_GIF
    3737             wxBITMAP_TYPE_PNG
     38                         wxBITMAP_TYPE_ANY
    3839             wxTB_FLAT
    3940             wxSIZE
     
    7374use File::Spec;
    7475use Wx::Locale qw/:default/;
     76use POSIX qw(ceil floor);
    7577
    7678require Win32 if($^O =~ /MSWin32/);
     
    104106          resized_settings_panel
    105107          thumbnail_settings_panel
    106           preview_settings_panel
    107108          advanced_settings_panel
    108109          watermark_settings_panel
     
    112113          resized_settings
    113114          thumbnail_settings
    114           preview_settings
    115115          advanced_settings
    116116          watermark_settings
     
    147147use Uploader::GUI::wxChoiceFilteredPanel;
    148148use Wx::Html;
     149use Uploader::GUI::wxImagePreview;
    149150use Uploader::GUI::wxHtmlWindow;
    150151use Data::Dumper;
     
    464465    );
    465466   
    466     $self->preview_settings(
    467         [
    468             {
    469                 label     => gettext("Use exif preview when available :"),
    470                 type      => 'Bool',
    471                 value   => sub { $self->imagelist->use_exif_preview(@_) },
    472             },
    473             {
    474                 label     => gettext("Custom preview ratio :"),
    475                 type      => 'Number',
    476                 value   => sub { $self->imagelist->preview_ratio(@_) },
    477             },
    478         ]   
    479     );
     467#    $self->preview_settings(
     468#        [
     469#            {
     470#                label     => gettext("Use exif preview when available :"),
     471#                type      => 'Bool',
     472#                value  => sub { $self->imagelist->use_exif_preview(@_) },
     473#            },
     474#            {
     475#                label     => gettext("Custom preview ratio :"),
     476#                type      => 'Number',
     477#                value  => sub { $self->imagelist->preview_ratio(@_) },
     478#            },
     479#        ]   
     480#    );
    480481
    481482    $self->advanced_settings(
     
    583584        $self->resized_settings_panel,
    584585        $self->thumbnail_settings_panel,
    585         $self->preview_settings_panel,
    586586        $self->advanced_settings_panel,
    587587        $self->watermark_settings_panel,
     
    655655    );   
    656656
    657     $self->preview_settings_panel->properties(
    658         $self->preview_settings,
    659     );   
     657    #$self->preview_settings_panel->properties(
     658    #    $self->preview_settings,
     659    #);   
    660660
    661661    $self->advanced_settings_panel->properties(
     
    719719        )   
    720720    );   
    721     $self->preview_settings_panel(
    722         Uploader::GUI::wxPropertyGridPanel->new(
    723             {
    724                 parentwnd       => $self,
    725                 properties      => $self->preview_settings,
    726 
     721    #$self->preview_settings_panel(
     722    #    Uploader::GUI::wxPropertyGridPanel->new(
     723    #        {
     724    #            parentwnd       => $self,
     725    #            properties      => $self->preview_settings,
     726
     727    #        }
     728    #    )   
     729    #);   
     730
     731    $self->watermark_settings_panel(
     732        Uploader::GUI::wxPropertyGridPanel->new(
     733            {
     734                parentwnd   => $self,
     735                properties  => $self->watermark_settings,
    727736            }
    728         )   
    729     );   
    730 
     737        )
     738    );
     739       
    731740    $self->advanced_settings_panel(
    732741        Uploader::GUI::wxPropertyGridPanel->new(
     
    738747        )   
    739748    );   
    740 
    741     $self->watermark_settings_panel(
    742         Uploader::GUI::wxPropertyGridPanel->new(
    743             {
    744                 parentwnd   => $self,
    745                 properties  => $self->watermark_settings,
    746             }
    747         )
    748     );
    749749
    750750    $self->image_prop_tags(
     
    763763
    764764    $self->image_preview(
    765         Wx::HtmlWindow->new(
    766             $self,
    767             -1,
    768             [-1,-1],
    769             [-1,-1],
     765        Uploader::GUI::wxImagePreview->new(
     766            {
     767                parentwnd    => $self,
     768            }
    770769        )
    771770    );
     
    922921    my ( $self ) = @_;
    923922
    924     $self->manager->GetPane("image_preview")->Float->Show(1);
    925     $self->manager->Update();   
     923        my $preview_pane = $self->manager->GetPane("image_preview");
     924    if (! $preview_pane->IsShown){
     925            $preview_pane->MinSize(100,75)->Float->Show(1);
     926        $self->manager->Update();   
     927
     928        $self->_image_preview_refresh;
     929        $self->image_preview->Refresh;         
     930        };
    926931       
    927932}
     
    10451050            gettext("Thumbnail"),
    10461051        ],
    1047         [
    1048             $self->preview_settings_panel,
    1049             gettext("Preview"),
    1050         ],
     1052#        [
     1053#            $self->preview_settings_panel,
     1054#            gettext("Preview"),
     1055#        ],
     1056        [
     1057            $self->watermark_settings_panel,
     1058            gettext("Watermark"),
     1059        ],   
    10511060        [
    10521061            $self->advanced_settings_panel,
    10531062            gettext("Advanced"),
    10541063        ],
    1055         [
    1056             $self->watermark_settings_panel,
    1057             gettext("Watermark"),
    1058         ]   
    10591064    ];
    10601065   
     
    13891394    $self->imageviewer->Refresh;       
    13901395
    1391     $self->image_preview->SetPage(
    1392         "<html></html>"
     1396    $self->image_preview->image(
     1397        0
    13931398    ) if !$self->imageviewer->GetItemCount;
    13941399
     1400    $self->image_preview->Refresh;
    13951401}
    13961402
     
    16201626    my( $self, $event ) = @_;
    16211627 
     1628    my $bc = Wx::BusyCursor->new;
     1629
    16221630    my $indx = $event->GetIndex;
    16231631
     
    16291637sub _on_imageviewer_item_selected {
    16301638    my ( $self, $index ) = @_; 
    1631 
    16321639    $self->current_imageviewer_index($index);
    16331640    $self->imagelist->SetCurrentImage($index);
     
    16361643        $self->imageviewer->GetSelectedItems
    16371644    );
    1638 
    1639     $self->_image_preview_refresh if @{$self->imagelist->image_selection} < 2;
    1640    
    1641     $self->manager->Update;
    1642    
     1645       
     1646        # image preview has a cost, don't do if useless.
     1647        if ( $self->image_preview->IsShown ){
     1648        $self->_image_preview_refresh;
     1649        $self->image_preview->Refresh;
     1650        }
     1651
    16431652    $self->image_prop_piwigo->Refresh;
    16441653    $self->image_prop_exif->Refresh;
     
    16501659    my ( $self ) = @_; 
    16511660
    1652 
    1653     my $html_src = sprintf("
    1654       <html>
    1655          <body>
    1656              <img src=\"%s\"/>
    1657          </body>
    1658       </html>
    1659       ",
    1660       $self->imagelist->current_image->preview_file,
    1661     );
    1662        
    1663     $self->image_preview->SetPage(
    1664         $html_src
    1665     );
    1666 
    1667     my $bmp = Wx::Bitmap->new(
    1668             $self->imagelist->current_image->preview_file,
    1669             $self->GetWxBitmapType($self->imagelist->type),
    1670         );
    1671 
    1672     my $size = [40+$bmp->GetWidth, 60+$bmp->GetHeight];
    1673 
    1674     $self->manager->GetPane("image_preview")->FloatingSize($size);
    1675    
     1661        my $current_image = $self->imagelist->current_image;
     1662    my $image = Wx::Image->new;
     1663    $image->LoadFile(
     1664        $current_image->file,
     1665        wxBITMAP_TYPE_ANY
     1666    );
     1667 
     1668    if($self->imagelist->auto_rotate){
     1669        # exif from original image
     1670        my $orientation = $current_image->exif_metadata->{Orientation};
     1671
     1672        # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW
     1673        if( $orientation =~ m/Rotate (\d+)/ ){
     1674                        for(my $i=0; $i < floor($1/90) ; $i++){
     1675                $image = $image->Rotate90;
     1676            }                           
     1677        }
     1678    }
     1679
     1680  $self->image_preview->image_size(
     1681      [$image->GetWidth, $image->GetHeight, ]
     1682  );       
     1683
     1684  $self->image_preview->image(
     1685      $image
     1686  );       
     1687 
    16761688}
    16771689
     
    18021814
    18031815    my $wximagelist = $self->imagelist->wx_thumb_imglist;
    1804 
     1816print Dumper "SetNewFilesViewerRefresh", $self->imagelist->current_image;
    18051817    my $indx = $wximagelist->Add(
    18061818        Wx::Bitmap->new(
     
    18101822    ) if defined $self->imagelist->current_image->wx_thumb_file;
    18111823    print $self->imagelist->current_image->wx_thumb_file, " added with index ", $indx, "\n";   
     1824       
    18121825    $self->imageviewer->Refresh(
    18131826        $wximagelist
  • extensions/pLoader/trunk/src/Uploader/Image.pm

    r3226 r4408  
    2626        file
    2727        wx_thumb_file
    28         preview_file
    2928        site_high_file
    3029        site_name
     
    3736        site_categories
    3837        site_tags
    39         preview_w
    40         preview_h
    4138        file_sum
     39                width
     40                height
    4241    /
    4342);
  • extensions/pLoader/trunk/src/Uploader/ImageList.pm

    r4291 r4408  
    5757                wx_thumb_imglist
    5858                wx_thumb_dir
    59                 preview_dir
    6059                site_resized_dir
    6160                site_thumb_dir
     
    204203    );
    205204
    206     $self->current_image->preview_file(
    207         File::Spec->catfile(
    208             $self->preview_dir,
    209             $filename
    210         )
    211     );
    212     $self->current_image->preview_file(
    213         $self->current_image->preview_file
    214     );
    215 
    216205    $self->current_image->site_thumb_file(
    217206        File::Spec->catfile(
     
    240229    # if some files have been previously selected
    241230    my $i = scalar @{$self->sums};
     231printf("SetNewFiles %s\n", $i);
    242232    my $count = 0;
    243233    $self->count($count);
     
    251241
    252242        if($is_new_image){
    253             my $use_wx_resize = $self->_create_gui_preview($info);
    254             $self->_create_gui_thumbnail($use_wx_resize);
     243            #my $use_wx_resize = $self->_create_gui_preview($info);
     244            $self->_create_gui_thumbnail();
    255245
    256246            # ok
    257247            if(!$@){
    258                 $self->progress_msg("Thumbnail and preview created for %s");
     248                $self->progress_msg("Selection thumbnail created for %s");
    259249            }
    260250            else {
     
    316306    my $image;
    317307    if ( !exists $self->image_sums->{$sum} ){
    318         print "_add_image ", Dumper $file, "\n";
     308        #print "_add_image ", Dumper $file, "\n";
    319309        # append to image list
    320310        $image = Uploader::Image->new(
     
    402392}
    403393
    404 sub _create_gui_preview {
    405     my ( $self, $info ) = @_;
    406 
    407     my $create_gui_preview;
    408     my $use_wx_resize;
    409     if($self->use_exif_preview){       
    410         # an exif preview is available. we try to use it
    411         if(defined $info->{PreviewImage} ){
    412             printf("use preview\n");
    413             $self->_write_preview_image( $info->{PreviewImage} );
    414             my $image = new Image::Magick;
    415             eval {
    416                 $create_gui_preview = $image->ReadImage(
    417                     $self->current_image->preview_file
    418                 );
    419             };
    420             unlink $self->current_image->preview_file if $create_gui_preview;
    421         }
    422         else {
    423             $create_gui_preview = 1;
    424         }
    425     }
    426     else {
    427         $create_gui_preview = 1;
    428     }
    429     print "create gui preview", $create_gui_preview, "\n";
    430     # have to create a preview file
    431     if($create_gui_preview) {
    432         eval {
    433             if(!$self->CreateGUIPreview()){
    434                 # use method provided by the caller
    435                 # source, target, type, ratio
    436                 print "CreateGUIPreview failed, use callback\n";
    437                 $self->RescaleCallback->(
    438                     $self->current_image->file,
    439                     $self->current_image->preview_file,
    440                     $self->type,
    441                     $self->preview_ratio,
    442                     undef,
    443                     undef,
    444                     $self->quality,
    445                 );
    446                 $use_wx_resize = 1;
    447             }
    448         };# create a preview file
    449     }   
    450 
    451     $self->RotateImage(
    452         $self->current_image->preview_file,
    453     ) if $self->auto_rotate;
    454 
    455     $self->_set_exif_tag(
    456         $self->current_image->preview_file,
    457         'Orientation',
    458         'Horizontal (normal)',
    459     ) if $self->auto_rotate;
    460    
    461     $use_wx_resize;     
    462 }
    463394
    464395sub _create_gui_thumbnail {
    465     my ( $self, $use_wx_resize ) = @_;
    466 
    467     # Now, we should have a valid preview image.
    468     # try to thumbnail it
     396    my ( $self ) = @_;
     397
    469398     eval {
    470399        printf("create gui thumbnail\n");
    471400        # use the preview image to create a gui display thumbnail
    472         if($use_wx_resize)
     401        if(!$self->CreateGUIThumbnail())
    473402        {
    474                 print "CreateGUIThumbnail failed, use callback\n";
    475                 $self->ResizeCallback->(
    476                     $self->current_image->preview_file,
    477                     $self->current_image->wx_thumb_file,
    478                     $self->type,
    479                     $self->wx_thumb_size,
    480                     $self->wx_thumb_size,
    481                     $self->wx_quality,
    482                 );
     403            print "CreateGUIThumbnail failed, use callback\n";
     404            $self->ResizeCallback->(
     405                $self->current_image->file,
     406                $self->current_image->wx_thumb_file,
     407                $self->type,
     408                $self->wx_thumb_size,
     409                $self->wx_thumb_size,
     410                $self->wx_quality,
     411            );
    483412               
    484         } else {
    485             $self->CreateGUIThumbnail();               
    486413        }
    487414     };
     
    529456    my ( $self ) = @_;
    530457
    531     return 1 if( -e $self->current_image->wx_thumb_file );
     458#    return 1 if( -e $self->current_image->wx_thumb_file );
    532459    my $rval = 0;
    533460    print "CreateGUIThumbnail ", $self->current_image->wx_thumb_file, "\n";
    534461    my $image = new Image::Magick;
    535462
    536     my $size = $self->wx_thumb_size;
    537 
    538     my $status = $image->Set(size=>sprintf("%sx%s", 3*$size, 3*$size));
     463    my $size = $self->wx_thumb_size||100;
     464
     465    my $status = $image->Set(size=>sprintf("%sx%s", 2*$size, 2*$size));
    539466    warn "$status" if $status ;
    540467
    541468    $status = $image->ReadImage(
    542         $self->current_image->preview_file
     469        $self->current_image->file
    543470    );
    544471    warn "$status" if $status;
    545472    return $rval if $status;
    546473
    547     $self->current_image->preview_w(
     474    $self->current_image->width(
    548475        $image->Get('width')
    549476    );
    550     $self->current_image->preview_h(
     477    $self->current_image->height(
    551478        $image->Get('height')
    552479    );
    553480
    554 
     481    printf("%sx%s%s\n", $size, $size, '^');
     482
     483        # maximize size and keep aspect ratio
    555484    $status = $image->Thumbnail(
    556485        geometry=>sprintf("%s%s>", $size*$size, '@')
    557486    );
     487    # to get adjusted to a square box
     488    #$status = $image->Thumbnail(
     489    #    geometry=>sprintf("%sx%s%s", $size, $size, '^')
     490    #);
    558491    warn "$status" if $status;
    559492    return $rval if $status;
     
    572505
    573506    $image->Set(
    574         quality=>$self->wx_quality
     507        quality=>$self->wx_quality||90
    575508    );
    576509
    577510    $status = $image->Strip();
    578511    warn "$status" if $status ;
     512
     513    # exif from original image
     514    my $orientation = $self->current_image->exif_metadata->{Orientation};
     515   
     516    # Valid for Rotate 180, Rotate 90 CW, Rotate 270 CW
     517    if( $orientation =~ m/Rotate (\d+)/ ){
     518        printf(
     519            "Rotate %s\n",
     520            $1
     521        );
     522   
     523        $image->Rotate( degrees=>$1 ) if $self->auto_rotate;   
     524    }
    579525   
    580526
     
    595541
    596542
    597 sub CreateGUIPreview {
    598     my ( $self ) = @_;
    599     printf("CreateGUIPreview %s\n", $self->current_image->preview_file );
    600     return 1 if( -e $self->current_image->preview_file );
    601    
    602     my $rval = 1;
    603 
    604     my $image = Image::Magick->new();
    605 
    606     my $ratio = $self->preview_ratio;
    607 
    608 
    609     my $status = $image->Read(
    610         sprintf(
    611             "%s",
    612             $self->current_image->file,
    613         )
    614     );
    615     warn "$status ", $self->current_image->file, "\n" if $status ;
    616     return 0 if $status;
    617 
    618     $status = $image->Thumbnail(
    619         geometry=>sprintf(
    620                               "%s%%x%s%%>",
    621                               $ratio,
    622                               $ratio
    623                          )
    624     );
    625     warn "$status" if $status ;
    626     return 0 if $status;
    627 
    628 
    629     $status = $image->Set(background=>"white");
    630     warn "$status" if $status ;
    631 
    632     $status = $image->Set(Gravity=>"Center");
    633     warn "$status" if $status ;
    634 
    635 
    636     $image->Set(quality=>$self->wx_quality);
    637 
    638 
    639     $status = $image->Write(
    640         sprintf(
    641             "%s:%s",
    642             $self->type,
    643             $self->current_image->preview_file,
    644         )
    645     );
    646     warn "$status" if $status ;
    647     return 0 if $status;
    648    
    649     undef $image;
    650 
    651     return $rval;
    652 }
    653543
    654544
     
    837727                exif_metadata
    838728                wx_thumb_dir
    839                 preview_dir
    840729                site_resized_dir
    841730                site_thumb_dir
     
    13501239
    13511240# read Orientation exif tag from original image
    1352 # apply rotation to image ( preview or resize )
     1241# apply rotation to $file image
    13531242sub RotateImage {
    13541243    my ( $self, $file ) = @_;
     
    13751264        $image->Rotate( degrees=>$1 ); 
    13761265       
    1377         # write resizd file
     1266        # write resized file
    13781267        $image->Write(
    13791268            $file
Note: See TracChangeset for help on using the changeset viewer.