Changeset 4408 for extensions
- Timestamp:
- Dec 2, 2009, 5:28:36 PM (14 years ago)
- 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 83 83 wx_thumb_dir 84 84 resized_dir 85 preview_dir86 85 userdata_dir 87 86 resized_dir … … 126 125 127 126 $self->version( 128 '2.0.5 b'127 '2.0.5C' 129 128 ); 130 129 131 130 # to check if we can use stored cache 132 131 $self->imagelist_version( 133 ' 7'132 '8' 134 133 ); 135 134 … … 463 462 thumb_size => 120, 464 463 site_thumb_dir => $self->thumb_dir, 465 wx_thumb_size => 1 20,464 wx_thumb_size => 100, 466 465 wx_thumb_dir => $self->wx_thumb_dir, 467 preview_ratio => 25,468 preview_dir => $self->preview_dir,469 466 resize_w => 800, 470 467 resize_h => 600, … … 474 471 blur => 0.9, 475 472 quality => 95, 476 wx_quality => 80,473 wx_quality => 90, 477 474 th_quality => 90, 478 475 auto_rotate => 1, … … 480 477 interlace => 'Line', 481 478 create_resized => 1, 482 use_exif_preview => 1,483 479 prefix => 'TN', 484 480 count => 0, … … 623 619 mkdir $resizedir unless -d $resizedir ; 624 620 $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 631 621 } 632 622 -
extensions/pLoader/trunk/src/Uploader/GUI/wxFrameAUI.pm
r4322 r4408 36 36 wxBITMAP_TYPE_GIF 37 37 wxBITMAP_TYPE_PNG 38 wxBITMAP_TYPE_ANY 38 39 wxTB_FLAT 39 40 wxSIZE … … 73 74 use File::Spec; 74 75 use Wx::Locale qw/:default/; 76 use POSIX qw(ceil floor); 75 77 76 78 require Win32 if($^O =~ /MSWin32/); … … 104 106 resized_settings_panel 105 107 thumbnail_settings_panel 106 preview_settings_panel107 108 advanced_settings_panel 108 109 watermark_settings_panel … … 112 113 resized_settings 113 114 thumbnail_settings 114 preview_settings115 115 advanced_settings 116 116 watermark_settings … … 147 147 use Uploader::GUI::wxChoiceFilteredPanel; 148 148 use Wx::Html; 149 use Uploader::GUI::wxImagePreview; 149 150 use Uploader::GUI::wxHtmlWindow; 150 151 use Data::Dumper; … … 464 465 ); 465 466 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 # ); 480 481 481 482 $self->advanced_settings( … … 583 584 $self->resized_settings_panel, 584 585 $self->thumbnail_settings_panel, 585 $self->preview_settings_panel,586 586 $self->advanced_settings_panel, 587 587 $self->watermark_settings_panel, … … 655 655 ); 656 656 657 $self->preview_settings_panel->properties(658 $self->preview_settings,659 );657 #$self->preview_settings_panel->properties( 658 # $self->preview_settings, 659 #); 660 660 661 661 $self->advanced_settings_panel->properties( … … 719 719 ) 720 720 ); 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, 727 736 } 728 ) 729 ); 730 737 ) 738 ); 739 731 740 $self->advanced_settings_panel( 732 741 Uploader::GUI::wxPropertyGridPanel->new( … … 738 747 ) 739 748 ); 740 741 $self->watermark_settings_panel(742 Uploader::GUI::wxPropertyGridPanel->new(743 {744 parentwnd => $self,745 properties => $self->watermark_settings,746 }747 )748 );749 749 750 750 $self->image_prop_tags( … … 763 763 764 764 $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 } 770 769 ) 771 770 ); … … 922 921 my ( $self ) = @_; 923 922 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 }; 926 931 927 932 } … … 1045 1050 gettext("Thumbnail"), 1046 1051 ], 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 ], 1051 1060 [ 1052 1061 $self->advanced_settings_panel, 1053 1062 gettext("Advanced"), 1054 1063 ], 1055 [1056 $self->watermark_settings_panel,1057 gettext("Watermark"),1058 ]1059 1064 ]; 1060 1065 … … 1389 1394 $self->imageviewer->Refresh; 1390 1395 1391 $self->image_preview-> SetPage(1392 "<html></html>"1396 $self->image_preview->image( 1397 0 1393 1398 ) if !$self->imageviewer->GetItemCount; 1394 1399 1400 $self->image_preview->Refresh; 1395 1401 } 1396 1402 … … 1620 1626 my( $self, $event ) = @_; 1621 1627 1628 my $bc = Wx::BusyCursor->new; 1629 1622 1630 my $indx = $event->GetIndex; 1623 1631 … … 1629 1637 sub _on_imageviewer_item_selected { 1630 1638 my ( $self, $index ) = @_; 1631 1632 1639 $self->current_imageviewer_index($index); 1633 1640 $self->imagelist->SetCurrentImage($index); … … 1636 1643 $self->imageviewer->GetSelectedItems 1637 1644 ); 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 1643 1652 $self->image_prop_piwigo->Refresh; 1644 1653 $self->image_prop_exif->Refresh; … … 1650 1659 my ( $self ) = @_; 1651 1660 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 1676 1688 } 1677 1689 … … 1802 1814 1803 1815 my $wximagelist = $self->imagelist->wx_thumb_imglist; 1804 1816 print Dumper "SetNewFilesViewerRefresh", $self->imagelist->current_image; 1805 1817 my $indx = $wximagelist->Add( 1806 1818 Wx::Bitmap->new( … … 1810 1822 ) if defined $self->imagelist->current_image->wx_thumb_file; 1811 1823 print $self->imagelist->current_image->wx_thumb_file, " added with index ", $indx, "\n"; 1824 1812 1825 $self->imageviewer->Refresh( 1813 1826 $wximagelist -
extensions/pLoader/trunk/src/Uploader/Image.pm
r3226 r4408 26 26 file 27 27 wx_thumb_file 28 preview_file29 28 site_high_file 30 29 site_name … … 37 36 site_categories 38 37 site_tags 39 preview_w40 preview_h41 38 file_sum 39 width 40 height 42 41 / 43 42 ); -
extensions/pLoader/trunk/src/Uploader/ImageList.pm
r4291 r4408 57 57 wx_thumb_imglist 58 58 wx_thumb_dir 59 preview_dir60 59 site_resized_dir 61 60 site_thumb_dir … … 204 203 ); 205 204 206 $self->current_image->preview_file(207 File::Spec->catfile(208 $self->preview_dir,209 $filename210 )211 );212 $self->current_image->preview_file(213 $self->current_image->preview_file214 );215 216 205 $self->current_image->site_thumb_file( 217 206 File::Spec->catfile( … … 240 229 # if some files have been previously selected 241 230 my $i = scalar @{$self->sums}; 231 printf("SetNewFiles %s\n", $i); 242 232 my $count = 0; 243 233 $self->count($count); … … 251 241 252 242 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(); 255 245 256 246 # ok 257 247 if(!$@){ 258 $self->progress_msg(" Thumbnail and previewcreated for %s");248 $self->progress_msg("Selection thumbnail created for %s"); 259 249 } 260 250 else { … … 316 306 my $image; 317 307 if ( !exists $self->image_sums->{$sum} ){ 318 print "_add_image ", Dumper $file, "\n";308 #print "_add_image ", Dumper $file, "\n"; 319 309 # append to image list 320 310 $image = Uploader::Image->new( … … 402 392 } 403 393 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 it411 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_file418 );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 file431 if($create_gui_preview) {432 eval {433 if(!$self->CreateGUIPreview()){434 # use method provided by the caller435 # source, target, type, ratio436 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 file449 }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 }463 394 464 395 sub _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 469 398 eval { 470 399 printf("create gui thumbnail\n"); 471 400 # use the preview image to create a gui display thumbnail 472 if( $use_wx_resize)401 if(!$self->CreateGUIThumbnail()) 473 402 { 474 475 476 $self->current_image->preview_file,477 478 479 480 481 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 ); 483 412 484 } else {485 $self->CreateGUIThumbnail();486 413 } 487 414 }; … … 529 456 my ( $self ) = @_; 530 457 531 return 1 if( -e $self->current_image->wx_thumb_file );458 # return 1 if( -e $self->current_image->wx_thumb_file ); 532 459 my $rval = 0; 533 460 print "CreateGUIThumbnail ", $self->current_image->wx_thumb_file, "\n"; 534 461 my $image = new Image::Magick; 535 462 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)); 539 466 warn "$status" if $status ; 540 467 541 468 $status = $image->ReadImage( 542 $self->current_image-> preview_file469 $self->current_image->file 543 470 ); 544 471 warn "$status" if $status; 545 472 return $rval if $status; 546 473 547 $self->current_image-> preview_w(474 $self->current_image->width( 548 475 $image->Get('width') 549 476 ); 550 $self->current_image-> preview_h(477 $self->current_image->height( 551 478 $image->Get('height') 552 479 ); 553 480 554 481 printf("%sx%s%s\n", $size, $size, '^'); 482 483 # maximize size and keep aspect ratio 555 484 $status = $image->Thumbnail( 556 485 geometry=>sprintf("%s%s>", $size*$size, '@') 557 486 ); 487 # to get adjusted to a square box 488 #$status = $image->Thumbnail( 489 # geometry=>sprintf("%sx%s%s", $size, $size, '^') 490 #); 558 491 warn "$status" if $status; 559 492 return $rval if $status; … … 572 505 573 506 $image->Set( 574 quality=>$self->wx_quality 507 quality=>$self->wx_quality||90 575 508 ); 576 509 577 510 $status = $image->Strip(); 578 511 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 } 579 525 580 526 … … 595 541 596 542 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 $ratio623 )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 }653 543 654 544 … … 837 727 exif_metadata 838 728 wx_thumb_dir 839 preview_dir840 729 site_resized_dir 841 730 site_thumb_dir … … 1350 1239 1351 1240 # read Orientation exif tag from original image 1352 # apply rotation to image ( preview or resize )1241 # apply rotation to $file image 1353 1242 sub RotateImage { 1354 1243 my ( $self, $file ) = @_; … … 1375 1264 $image->Rotate( degrees=>$1 ); 1376 1265 1377 # write resiz d file1266 # write resized file 1378 1267 $image->Write( 1379 1268 $file
Note: See TracChangeset
for help on using the changeset viewer.