| 870 | } |
| 871 | |
| 872 | func (v *Processor) export( |
| 873 | image *vips.Image, format vips.ImageType, compression int, quality int, palette bool, bitdepth int, stripMetadata bool, lossless bool, |
| 874 | ) ([]byte, error) { |
| 875 | if _, err := v.CheckResolution(image, nil); err != nil { |
| 876 | return nil, err |
| 877 | } |
| 878 | switch format { |
| 879 | case vips.ImageTypePng: |
| 880 | opts := &vips.PngsaveBufferOptions{ |
| 881 | Q: quality, |
| 882 | Palette: palette, |
| 883 | Bitdepth: bitdepth, |
| 884 | Compression: compression, |
| 885 | } |
| 886 | if stripMetadata { |
| 887 | opts.Keep = vips.KeepNone |
| 888 | } else { |
| 889 | opts.Keep = vips.KeepAll |
| 890 | } |
| 891 | return image.PngsaveBuffer(opts) |
| 892 | case vips.ImageTypeWebp: |
| 893 | opts := &vips.WebpsaveBufferOptions{ |
| 894 | Q: quality, |
| 895 | Lossless: lossless, |
| 896 | Effort: 4, |
| 897 | } |
| 898 | if stripMetadata { |
| 899 | opts.Keep = vips.KeepNone |
| 900 | } else { |
| 901 | opts.Keep = vips.KeepAll |
| 902 | } |
| 903 | return image.WebpsaveBuffer(opts) |
| 904 | case vips.ImageTypeJxl: |
| 905 | opts := &vips.JxlsaveBufferOptions{ |
| 906 | Q: quality, |
| 907 | Lossless: lossless, |
| 908 | } |
| 909 | if stripMetadata { |
| 910 | opts.Keep = vips.KeepNone |
| 911 | } else { |
| 912 | opts.Keep = vips.KeepAll |
| 913 | } |
| 914 | return image.JxlsaveBuffer(opts) |
| 915 | case vips.ImageTypeTiff: |
| 916 | opts := &vips.TiffsaveBufferOptions{ |
| 917 | Q: quality, |
| 918 | } |
| 919 | if stripMetadata { |
| 920 | opts.Keep = vips.KeepNone |
| 921 | } else { |
| 922 | opts.Keep = vips.KeepAll |
| 923 | } |
| 924 | return image.TiffsaveBuffer(opts) |
| 925 | case vips.ImageTypeGif: |
| 926 | opts := &vips.GifsaveBufferOptions{} |
| 927 | if stripMetadata { |
| 928 | opts.Keep = vips.KeepNone |
| 929 | } else { |