Няшная / Говнокод #17231 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
bool bitmap_to_24bit_string(bitmap *bmp, char **str, uint32_t *len)
{
    if (!bmp || !bmp->pixels)
    return false;
    int I, J;
    uint32_t size = ((bmp->width * 24 + 31) / 32) * 4 * bmp->height;
    rgb24 *pixels = malloc(size);
    if (pixels)
    {
        for (I = 0; I < bmp->height; ++I)
        {
            for (J = 0; J < bmp->width; ++J)
            {
                pixels[I * bmp->width + J].b = bmp->pixels[I * bmp->width + J].r;
                pixels[I * bmp->width + J].g = bmp->pixels[I * bmp->width + J].g;
                pixels[I * bmp->width + J].r = bmp->pixels[I * bmp->width + J].b;
            }
        }
        uint32_t destlen = compressBound(size);
        *str = malloc(destlen);
        if (*str)
        {
            if (compress((Bytef *)*str, (uLongf *)&destlen, (Bytef *)pixels, size) == Z_OK)
            {
                free(pixels);
                pixels = NULL;
                char *b64str;
                uint32_t b64_len;
                if (base64encode((const uint8_t *)*str, destlen, &b64str, &b64_len))
                {
                    free(*str);
                    *str = b64str;
                    *len = b64_len + 2;
                    b64str = malloc(*len);
                    if (b64str)
                    {
                        b64str[0] = 'm';
                        strncpy(&b64str[1], *str, b64_len);
                        free(*str);
                        *str = b64str;
                        (*str)[b64_len + 1] = '';
                        return true;
                    }
                }
            }
            free(*str);
            *len = 0;
            *str = NULL;
        }
        free(pixels);
    }
    return false;
}

Ещё подкину в общую копилку

Запостил: Cynicrus Cynicrus, (Updated )

Комментарии (1) RSS

  • Какой-то хардкор, даже парсер не подсветил.
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8