Author: tian
Date: Sun Dec 14 20:27:19 2014
New Revision: 2253
URL: http://svn.gna.org/viewcvs/gcstar?rev=2253&view=rev
Log:
Make image loading faster on Android application
Modified:
trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm
trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm
trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm
Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm
URL:
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm Sun Dec 14 20:27:19 2014
@@ -131,6 +131,29 @@
my ($self, $suffix, $dir, $title) = @_;
return $self->{options}->{parent}->getUniqueImageFileName($suffix,
$title, $dir);
+ }
+
+ sub createMiniature
+ {
+ my ($self, $source, $dest, $newHeight) = @_;
+
+ $source =~ /.*?(\.[^.]*)$/;
+ my $suffix = $1;
+ my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($source);
+ my ($width, $height) = ($pixbuf->get_width, $pixbuf->get_height);
+ my $picWidth = $width * ($newHeight / $height);
+ $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, $picWidth, $newHeight, 1);
+ my $format;
+ if ($suffix =~ /png/i)
+ {
+ $format = 'png';
+ }
+ else
+ {
+ $dest =~ s/\.[^.]*$/\.jpg/;
+ $format = 'jpeg';
+ }
+ $pixbuf->save($dest, $format);
}
sub duplicatePicture
@@ -157,21 +180,7 @@
my $picHeight = $self->getNewPictureHeight;
if ($picHeight)
{
- my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($newPic);
- my ($width, $height) = ($pixbuf->get_width,
$pixbuf->get_height);
- my $picWidth = $width * ($picHeight / $height);
- $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, $picWidth,
$picHeight, 1);
- my $format;
- if ($suffix =~ /png/i)
- {
- $format = 'png';
- }
- else
- {
- $dest =~ s/\.[^.]*$/\.jpg/;
- $format = 'jpeg';
- }
- $pixbuf->save($dest, $format);
+ $self->createMiniature($newPic, $dest, $picHeight);
}
else
{
Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm
URL:
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm Sun Dec 14
20:27:19 2014
@@ -45,6 +45,7 @@
bless ($self, $class);
$self->{useZip} = $self->checkOptionalModule('Archive::Zip');
+ $self->{covers} = {};
return $self;
}
@@ -57,10 +58,13 @@
sub transformPicturePath
{
my ($self, $path, $file, $item, $field) = @_;
- return $self->duplicatePicture($path,
+ my $newPath = $self->duplicatePicture($path,
$field,
$self->{imageDir},
$item->{$self->{model}->{commonFields}->{title}});
+ $self->{isCover}->{$newPath} = 1
+ if $self->{model}->{commonFields}->{cover} eq $field;
+ return $newPath;
}
sub process
@@ -123,8 +127,19 @@
my $zip = Archive::Zip->new();
$zip->addFile(basename($self->{fileName}));
$zip->addDirectory(basename($self->{imageDir}));
+ my $miniDir = $self->{imageDir}.'-mini';
+ mkdir $miniDir;
+ $zip->addDirectory(basename($miniDir));
my @images = glob $imagesSubDir.'/*';
- $zip->addFile($_) foreach @images;
+ foreach my $image(@images)
+ {
+ $zip->addFile($image);
+ my $imgFile = basename($image);
+ my $fullFileName = $self->{imageDir}."/$imgFile";
+ next if !$self->{isCover}->{$image};
+ $self->createMiniature($fullFileName, "$miniDir/$imgFile",
150);
+ $zip->addFile(basename($miniDir)."/$imgFile");
+ }
my $result = $zip->writeToFileNamed($outFile);
if ($result)
{
Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm
URL:
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm Sun Dec 14 20:27:19 2014
@@ -195,6 +195,7 @@
$parent->{options}->{modelFile}->set_sensitive($model eq 'UseFile');
$parent->{fieldsSelection}->set_sensitive($self->{isGeneric}->{$model})
if $parent->{fieldsSelection};
+ $self->{wantsFieldsSelection} = $self->{isGeneric}->{$model};
}
sub preview
@@ -239,8 +240,9 @@
sub wantsFieldsSelection
{
my $self = shift;
- return 1;
- return $self->{genericAdded} || $self->{genericModels};
+ return $self->{wantsFieldsSelection};
+ #return 0;
+ #return $self->{genericAdded} || $self->{genericModels};
}
sub wantsImagesSelection
_______________________________________________
GCstar-commits mailing list
[email protected]
https://mail.gna.org/listinfo/gcstar-commits