mirror of
https://github.com/Dadido3/noita-mapcap.git
synced 2024-11-22 21:17:33 +00:00
41 lines
978 B
Go
41 lines
978 B
Go
|
// Copyright (c) 2024 David Vogel
|
||
|
//
|
||
|
// This software is released under the MIT License.
|
||
|
// https://opensource.org/licenses/MIT
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"image"
|
||
|
"log"
|
||
|
"os"
|
||
|
|
||
|
"github.com/chai2010/webp"
|
||
|
)
|
||
|
|
||
|
func exportWebP(stitchedImage image.Image, outputPath string) error {
|
||
|
log.Printf("Creating output file %q.", outputPath)
|
||
|
|
||
|
return exportWebPSilent(stitchedImage, outputPath)
|
||
|
}
|
||
|
|
||
|
func exportWebPSilent(stitchedImage image.Image, outputPath string) error {
|
||
|
bounds := stitchedImage.Bounds()
|
||
|
if bounds.Dx() > 16383 || bounds.Dy() > 16383 {
|
||
|
return fmt.Errorf("image size exceeds the maximum allowed size (16383) of a WebP image: %d x %d", bounds.Dx(), bounds.Dy())
|
||
|
}
|
||
|
|
||
|
f, err := os.Create(outputPath)
|
||
|
if err != nil {
|
||
|
return fmt.Errorf("failed to create file: %w", err)
|
||
|
}
|
||
|
defer f.Close()
|
||
|
|
||
|
if err = webp.Encode(f, stitchedImage, &webp.Options{Lossless: true}); err != nil {
|
||
|
return fmt.Errorf("failed to encode image %q: %w", outputPath, err)
|
||
|
}
|
||
|
|
||
|
return nil
|
||
|
}
|