X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FController%2FHelper%2FThumbnailCreator.pm;h=cc262d130d1c728521648214decebfc1393fa3af;hb=9dfd320ff258071e3ad78dd6cf2d76e215efd4f7;hp=072d89d76ce0e1420cac21ea98d0ff787edd8b12;hpb=0bfbcce6e77e0f9d83e4f54f3fe9da7edcc866f3;p=kivitendo-erp.git diff --git a/SL/Controller/Helper/ThumbnailCreator.pm b/SL/Controller/Helper/ThumbnailCreator.pm index 072d89d76..cc262d130 100644 --- a/SL/Controller/Helper/ThumbnailCreator.pm +++ b/SL/Controller/Helper/ThumbnailCreator.pm @@ -15,7 +15,6 @@ require Exporter; 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' }, @@ -24,12 +23,13 @@ our %supported_mime_types = ( ); 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); @@ -38,11 +38,11 @@ sub file_create_thumbnail { $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; } @@ -66,25 +66,23 @@ sub file_probe_image_type { } 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 { @@ -106,6 +104,7 @@ sub file_update_type_and_dimensions { } 1; + __END__ =pod @@ -114,31 +113,12 @@ __END__ =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 Ewh@futureworldsearch.netE - -=cut - - -=head1 INTERFACE - - -=head1 DEPENDENCIES - - -=head1 SEE ALSO - - +Werner Hahn Ewh@futureworldsearch.netE