our @ISA = qw(Exporter);
our @EXPORT = qw(file_create_thumbnail file_update_thumbnail file_probe_type file_probe_image_type file_update_type_and_dimensions);
-# TODO PDFs and others like odt,txt,...
our %supported_mime_types = (
'image/gif' => { extension => 'gif', convert_to_png => 1, },
'image/png' => { extension => 'png' },
);
sub file_create_thumbnail {
- my ($self) = @_;
- croak "No picture set yet" if !$self->file_content;
+ my ($thumb, %params) = @_;
+
+ croak "No picture set yet" if !$thumb->{content};
- my $image = GD::Image->new($self->file_content);
+ my $image = GD::Image->new($thumb->{content});
my ($width, $height) = $image->getBounds;
- my $max_dim = 64;
+ my $max_dim = $params{size} // 64;
my $curr_max = max $width, $height, 1;
my $factor = $curr_max <= $max_dim ? 1 : $curr_max / $max_dim;
my $new_width = int($width / $factor + 0.5);
$thumbnail->copyResized($image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
- $self->thumbnail_img_content($thumbnail->png);
- $self->thumbnail_img_content_type('image/png');
- $self->thumbnail_img_width($new_width);
- $self->thumbnail_img_height($new_height);
- return 1;
+ $thumb->{thumbnail_img_content} = $thumbnail->png;
+ $thumb->{thumbnail_img_content_type} = "image/png";
+ $thumb->{thumbnail_img_width} = $new_width;
+ $thumb->{thumbnail_img_height} = $new_height;
+ return $thumb;
}
}
sub file_probe_type {
- my ($self) = @_;
-
- return (t8("No file uploaded yet")) if !$self->file_content;
- my $mime_type = File::MimeInfo::Magic::magic($self->file_content);
-
- my $info = Image::Info::image_info(\$self->{file_content});
+ my ($content, %params) = @_;
+ return (t8("No file uploaded yet")) if !$content;
+ my $info = Image::Info::image_info(\$content);
if (!$info || $info->{error} || !$info->{file_media_type} || !$supported_mime_types{ $info->{file_media_type} }) {
$::lxdebug->warn("Image::Info error: " . $info->{error}) if $info && $info->{error};
return (t8('Unsupported image type (supported types: #1)', join(' ', sort keys %supported_mime_types)));
}
- $self->file_content_type($info->{file_media_type});
- $self->files_img_width($info->{width});
- $self->files_img_height($info->{height});
- $self->files_mtime(DateTime->now_local);
+ my $thumbnail;
+ $thumbnail->{file_content_type} = $info->{file_media_type};
+ $thumbnail->{file_image_width} = $info->{width};
+ $thumbnail->{file_image_height} = $info->{height};
+ $thumbnail->{content} = $content;
- $self->file_create_thumbnail;
+ $thumbnail = &file_create_thumbnail($thumbnail, %params);
- return ();
+ return $thumbnail;
}
sub file_update_type_and_dimensions {
}
1;
+
__END__
=pod
=head1 NAME
- SL::DB::Helper::ThumbnailCreator - DatabaseClass Helper for Fileuploads
+SL::Controller::Helper::ThumbnailCreator - Helper for Fileuploads
=head1 SYNOPSIS
- use SL::DB::Helper::ThumbnailCreator;
-
- # synopsis...
-
-=head1 DESCRIPTION
-
- # longer description..
+use SL::Controller::Helper::ThumbnailCreator;
=head1 AUTHOR
- Werner Hahn E<lt>wh@futureworldsearch.netE<gt>
-
-=cut
-
-
-=head1 INTERFACE
-
-
-=head1 DEPENDENCIES
-
-
-=head1 SEE ALSO
-
-
+Werner Hahn E<lt>wh@futureworldsearch.netE<gt>