Bugzilla – Attachment 180423 Details for
Bug 33857
Reduce and resize local cover images
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 33857: Avoid increasing file size while uploading image
Bug-33857-Avoid-increasing-file-size-while-uploadi.patch (text/plain), 6.99 KB, created by
Hammat wele
on 2025-04-02 18:54:02 UTC
(
hide
)
Description:
Bug 33857: Avoid increasing file size while uploading image
Filename:
MIME Type:
Creator:
Hammat wele
Created:
2025-04-02 18:54:02 UTC
Size:
6.99 KB
patch
obsolete
>From a3c4ceae947da1e1ce7e49b3acb1ac45e03b542a Mon Sep 17 00:00:00 2001 >From: Hammat Wele <hammat.wele@inlibro.com> >Date: Thu, 5 Sep 2024 18:56:40 +0000 >Subject: [PATCH] Bug 33857: Avoid increasing file size while uploading image >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >This patch prevents image size from increasing while uploading by keeping the original image format > >Test plan: > >1. Download the attached image large-image.jpg > --> It should be ~170kB and 1000Ã1500 pixels >2. Enable LocalCoverImages in System preferences >3. Find a record in the staff interface >4. Go to "Images" tab >5. Upload large-image.jpg image > 5.1. Click on "Upload" > 5.2. Click on "Drop files here or click to select a file" > 5.3. Choose picture (large-image.jpg) > 5.4. Click on "Process images" >6. Click on image for large image >7. Right-click on the image and save it > --> It is ~930kB and 600x900 pixels > >8. Apply the patch >9. Detele the previous uploaded image >10. Repeat step 3, 4, 5, 6, 7 > --> The image is ~92kB and 600x900 pixels >11. prove t/db_dependent/Koha/CoverImages.t > --> All tests should be successful >--- > Koha/CoverImage.pm | 7 +-- > .../prog/en/modules/tools/upload-images.tt | 2 + > .../intranet-tmpl/prog/js/upload-images.js | 2 + > t/db_dependent/Koha/CoverImages.t | 52 ++++++++++++++++++- > tools/upload-cover-image.pl | 4 +- > 5 files changed, 62 insertions(+), 5 deletions(-) > >diff --git a/Koha/CoverImage.pm b/Koha/CoverImage.pm >index 8a67fa1d92..7a8e2ca353 100644 >--- a/Koha/CoverImage.pm >+++ b/Koha/CoverImage.pm >@@ -63,9 +63,10 @@ sub new { > my $fullsize = > $class->_scale_image( $src_image, 600, 800 ); # MAX pixel dims are 600 X 800 for full-size image... > >- $params->{mimetype} = 'image/png'; >- $params->{imagefile} = $fullsize->png(); >- $params->{thumbnail} = $thumbnail->png(); >+ $params->{mimetype} = $params->{mimetype} // 'image/png'; >+ my ( $app, $format ) = split('/',$params->{mimetype}); >+ $params->{imagefile} = $fullsize->$format(); >+ $params->{thumbnail} = $thumbnail->$format(); > } > > return $class->SUPER::new($params); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/upload-images.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/upload-images.tt >index b440096787..7724fddfe5 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/upload-images.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/tools/upload-images.tt >@@ -227,9 +227,11 @@ > [% IF itemnumber %] > <input type="hidden" id="itemnumber" name="itemnumber" value="[% itemnumber | html %]" /> > <input type="hidden" name="filetype" value="image" /> >+ <input type="hidden" name="mimetype" id="mimetype" value="" /> > [% ELSIF biblionumber %] > <input type="hidden" id="biblionumber" name="biblionumber" value="[% biblionumber | html %]" /> > <input type="hidden" name="filetype" value="image" /> >+ <input type="hidden" name="mimetype" id="mimetype" value="" /> > [% END %] > > <fieldset id="upload_options" class="rows"> >diff --git a/koha-tmpl/intranet-tmpl/prog/js/upload-images.js b/koha-tmpl/intranet-tmpl/prog/js/upload-images.js >index cbe226f4f7..20129115df 100644 >--- a/koha-tmpl/intranet-tmpl/prog/js/upload-images.js >+++ b/koha-tmpl/intranet-tmpl/prog/js/upload-images.js >@@ -93,7 +93,9 @@ function prepUpLoad(event) { > $("#fileuploadstatus, #upload_options").show(); > var fd = new FormData(); > fd.append("file", file); >+ $("#mimetype").val(''); > if (ParseFile(file)) { >+ $("#mimetype").val(file.type); > StartUpload(fd); > } > } >diff --git a/t/db_dependent/Koha/CoverImages.t b/t/db_dependent/Koha/CoverImages.t >index 953947e62d..6525c66e67 100755 >--- a/t/db_dependent/Koha/CoverImages.t >+++ b/t/db_dependent/Koha/CoverImages.t >@@ -19,7 +19,7 @@ > > use Modern::Perl; > >-use Test::More tests => 14; >+use Test::More tests => 23; > use Test::Exception; > > use FindBin '$Bin'; >@@ -96,4 +96,54 @@ Koha::CoverImage->new( > is( $biblio->cover_images->count, 3, ); > is( $item->cover_images->count, 2, ); > >+$logo_filepath = "$Bin/../../../koha-tmpl/intranet-tmpl/prog/img/koha-logo.gif"; >+my $mimetype = 'image/gif'; >+$image = Koha::CoverImage->new( >+ { >+ biblionumber => $biblio->biblionumber, >+ src_image => GD::Image->new($logo_filepath), >+ mimetype => $mimetype >+ } >+)->store; >+$cover_image = $biblio->cover_images->last; >+ok( $cover_image->imagefile, 'image is stored in imagefile' ); >+ok( $cover_image->thumbnail, 'thumbnail has been generated' ); >+is( >+ $cover_image->mimetype, $mimetype, >+ 'The original mimetype has been kept' >+); >+ >+$logo_filepath = "$Bin/../../../koha-tmpl/intranet-tmpl/prog/img/koha-logo.png"; >+$mimetype = 'image/png'; >+$image = Koha::CoverImage->new( >+ { >+ biblionumber => $biblio->biblionumber, >+ src_image => GD::Image->new($logo_filepath), >+ mimetype => $mimetype >+ } >+)->store; >+$cover_image = $biblio->cover_images->last; >+ok( $cover_image->imagefile, 'image is stored in imagefile' ); >+ok( $cover_image->thumbnail, 'thumbnail has been generated' ); >+is( >+ $cover_image->mimetype, $mimetype, >+ 'The original mimetype has been kept' >+); >+ >+$logo_filepath = "$Bin/../../../koha-tmpl/intranet-tmpl/lib/greybox/GreyBox_v5_5/static_files/night_valley.jpg"; >+$mimetype = 'image/jpeg'; >+$image = Koha::CoverImage->new( >+ { >+ biblionumber => $biblio->biblionumber, >+ src_image => GD::Image->new($logo_filepath), >+ mimetype => $mimetype >+ } >+)->store; >+$cover_image = $biblio->cover_images->last; >+ok( $cover_image->imagefile, 'image is stored in imagefile' ); >+ok( $cover_image->thumbnail, 'thumbnail has been generated' ); >+is( >+ $cover_image->mimetype, $mimetype, >+ 'The original mimetype has been kept' >+); > $schema->storage->txn_rollback; >diff --git a/tools/upload-cover-image.pl b/tools/upload-cover-image.pl >index d7cff847dc..a134fc2fb6 100755 >--- a/tools/upload-cover-image.pl >+++ b/tools/upload-cover-image.pl >@@ -67,6 +67,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( > my $filetype = $input->param('filetype'); > my $biblionumber = $input->param('biblionumber'); > my $itemnumber = $input->param('itemnumber'); >+my $mimetype = $input->param('mimetype'); > my $replace = !C4::Context->preference("AllowMultipleCovers") > || $input->param('replace'); > my $op = $input->param('op') // q{}; >@@ -118,7 +119,8 @@ if ( $op eq 'cud-process' && $fileID ) { > { > biblionumber => $biblionumber, > itemnumber => $itemnumber, >- src_image => $srcimage >+ src_image => $srcimage, >+ mimetype => $mimetype > } > )->store; > }; >-- >2.34.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 33857
:
151780
|
151781
|
151810
|
152307
|
152308
|
152313
|
171103
| 180423