aboutsummaryrefslogtreecommitdiff
path: root/src/image.gleam
diff options
context:
space:
mode:
Diffstat (limited to 'src/image.gleam')
-rw-r--r--src/image.gleam29
1 files changed, 11 insertions, 18 deletions
diff --git a/src/image.gleam b/src/image.gleam
index 93fe300..0ce82ea 100644
--- a/src/image.gleam
+++ b/src/image.gleam
@@ -4,8 +4,17 @@ pub type ImageInformation {
pub fn get_image_information(image) {
case image {
- <<0x89, "PNG\r\n":utf8, 0x1A, "\n":utf8, _rest:bits>> ->
- parse_png_chunks(image, 8)
+ <<
+ 0x89,
+ "PNG\r\n":utf8,
+ 0x1A,
+ "\n":utf8,
+ _length:32,
+ "IHDR":utf8,
+ width:32,
+ height:32,
+ _rest:bits,
+ >> -> Ok(ImageInformation(width, height, "png"))
<<
"GIF":utf8,
_version:bytes-3,
@@ -16,19 +25,3 @@ pub fn get_image_information(image) {
_ -> Error("Unsupported image format")
}
}
-
-fn parse_png_chunks(image, offset) {
- case image {
- <<
- _:unit(8)-size(offset),
- _length:32,
- "IHDR":utf8,
- width:32,
- height:32,
- _rest:bits,
- >> -> Ok(ImageInformation(width, height, "png"))
- <<_:size(offset), length:32, _:4, _:bits>> ->
- parse_png_chunks(image, offset + length + 12)
- _ -> Error("Invalid PNG chunk")
- }
-}