fix: uninterlace only interlaced png

This commit is contained in:
Christophe Robillard 2023-09-21 15:19:21 +02:00 committed by krichtof
parent 46edaed6bc
commit 7529294845

View file

@ -4,11 +4,16 @@ module UninterlacePngConcern
private private
def uninterlace_png(uploaded_file) def uninterlace_png(uploaded_file)
if uploaded_file&.content_type == 'image/png' if uploaded_file&.content_type == 'image/png' && interlaced?(uploaded_file.tempfile.to_path)
chunky_img = ChunkyPNG::Image.from_io(uploaded_file.to_io) chunky_img = ChunkyPNG::Image.from_io(uploaded_file.to_io)
chunky_img.save(uploaded_file.tempfile.to_path, interlace: false) chunky_img.save(uploaded_file.tempfile.to_path, interlace: false)
uploaded_file.tempfile.reopen(uploaded_file.tempfile.to_path, 'rb') uploaded_file.tempfile.reopen(uploaded_file.tempfile.to_path, 'rb')
end end
uploaded_file uploaded_file
end end
def interlaced?(png_path)
png = MiniMagick::Image.open(png_path)
png.data["interlace"] != "None"
end
end end