Преглед на файлове

return comp info in bytes (support for 16 bit images)

Anaël Seghezzi преди 7 години
родител
ревизия
9dfa8c7f31
променени са 1 файла, в които са добавени 5 реда и са изтрити 4 реда
  1. 5 4
      stb_image.h

+ 5 - 4
stb_image.h

@@ -4902,7 +4902,7 @@ static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp)
    }
    }
    if (x) *x = p->s->img_x;
    if (x) *x = p->s->img_x;
    if (y) *y = p->s->img_y;
    if (y) *y = p->s->img_y;
-   if (comp) *comp = p->s->img_n;
+   if (comp) *comp = p->s->img_n * p->depth / 8;
    return 1;
    return 1;
 }
 }
 
 
@@ -6667,7 +6667,7 @@ static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp)
 #ifndef STBI_NO_PSD
 #ifndef STBI_NO_PSD
 static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
 static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
 {
 {
-   int channelCount, dummy;
+   int channelCount, dummy, depth;
    if (!x) x = &dummy;
    if (!x) x = &dummy;
    if (!y) y = &dummy;
    if (!y) y = &dummy;
    if (!comp) comp = &dummy;
    if (!comp) comp = &dummy;
@@ -6687,7 +6687,8 @@ static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
    }
    }
    *y = stbi__get32be(s);
    *y = stbi__get32be(s);
    *x = stbi__get32be(s);
    *x = stbi__get32be(s);
-   if (stbi__get16be(s) != 8) {
+   depth = stbi__get16be(s);
+   if (depth != 8 && depth != 16) {
        stbi__rewind( s );
        stbi__rewind( s );
        return 0;
        return 0;
    }
    }
@@ -6695,7 +6696,7 @@ static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp)
        stbi__rewind( s );
        stbi__rewind( s );
        return 0;
        return 0;
    }
    }
-   *comp = 4;
+   *comp = 4 * depth / 8;
    return 1;
    return 1;
 }
 }
 #endif
 #endif