wklejto.pl

Dodane przez: ~Anonim (2020-10-18 20:48) -> text
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
#include <iostream>
#include <string>
#include <cstdlib>
#define STB_IMAGE_IMPLEMENTATION
#include "stb\stb_image.h"
#define STB_IMAGE_WRITE_IMPLEMENTATION
#include "stb\stb_image_write.h"
 
 
int main() {
    int width, height, ch;
    std::string path = "img.jpg";
    std::string path_png = "img.png";
    std::string path1 = "img1.jpg";
    Templates[25] int = { 
    1, 2, 1,
    2, 4, 2,
    -1, -4, -7, -4, -1,
    -4, -16, -26, -16, -4,
    -7, -26, 505, -26, -7,
    -4, -16, -26, -16, -4,
    -1, -4, -7, -4, -1 };
 
    unsigned char* image = stbi_load(path.c_str(), &width, &height, &ch, 0);
 
    if (image == NULL) {
        std::cout << "Nie wczytano obrazu";
        exit(1);
    }
 
    std::cout << "Szerokosc: " << width << std::endl << "Wysokosc: " << height << std::endl << "Ilosc bajtów na piksel: " << ch << std::endl;
 
    size_t img_size = width * height * ch; // Obliczamy wielkośc obrazu.
    int gray_ch = ch == 4 ? 2 : 1; //??
    size_t gray_image_size = width * height * gray_ch;
    std::cout << "ilosc bajtow na piksel szarego obrazka: " << gray_ch << std::endl;
 
 
    unsigned char* gray_image = (unsigned char*)malloc(gray_image_size);
 
 
    if (gray_image == NULL)
    {
        std::cout << "Błąd alokacji";
        exit(1);
    }
 
 
    for (unsigned char* pi = image, *pgi = gray_image; pi != image + img_size; pi += ch, pgi += gray_ch)  {
        *pgi = (*pi + *(pi + 1) + *(pi + 2)) / 3;
        if (ch == 4){
            *(pgi + 1) = *(pi + 3);
        }
    }
 
 
   for (unsigned char* pi = gray_image, *pg = gray1_image; pi != gray_ch + gray_image_size; pi += gray_ch, pg += gray_ch) {
       if (pi < gray_image + width * gray_ch + gray_ch) {
           *pg = *pi;
       }
       else if (pi < gray_image + gray_image_size - width * gray_ch - gray_ch) {
           *pg = (*(pi - w * gray_ch - gray_ch) * 1 + (pi - w * gray_ch) * 2 + *(pi - w * gray_ch + gray_ch) * 1
               + *(pi - gray_ch) * 2 + *(pi) * 4 + *(pi + gray_ch) * 2
               + *(pi + w * gray_ch - gray_ch) * 1 + *(pi + w * gray_ch) * 2 + *(pi + w * gray_ch + gray_ch) * 1) / 9;
 
           if (ch == 4) {
               *(pg + 1) = *(pg + 1);
           }
       }
       else {
           *pg = *pi;
       }
 
 
    stbi_write_png(path_png.c_str(), width, height, gray_ch, gray_image, width * gray_ch);
    stbi_write_jpg(path1.c_str(), width, height, gray_ch, gray_image, 100);
    stbi_image_free(image);
    stbi_image_free(grey_image);
 
 
Wygenerowano w 0.000s, przy pomocy GeSHi 1.0.8
'
Podziel się na Facebook Podziel się na BLIP Podziel się na Twitter Podziel się na Buzz Podziel się na Flaker Dodaj zakładkę Google Podziel się na Delicious Wykop to!

Nowy Komentarz:

Komentarze:

Brak Komentarzy!