IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
D8sGust
Člen
Avatar
D8sGust:28.11.2014 10:42

Prosím vás, nevíte někdo jak vytvořit rámeček u obrázku ? Tak, aby se změnili okrajové pixely na jinou barvu a každá strana měla jinou barvu.

 
Odpovědět
28.11.2014 10:42
Avatar
Odpovídá na D8sGust
Luboš Běhounek Satik:28.11.2014 11:56

Otevřít obrázek, upravit krajní pixely, zavřít obrázek.

Jednodušší než C/C++ by bylo použít třeba C#, tam by to byl kód na 5 řádků.

Nahoru Odpovědět
28.11.2014 11:56
https://www.facebook.com/peasantsandcastles/
Avatar
D8sGust
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
D8sGust:29.11.2014 19:44

Bylo by to jednoduché, ale mám za úkol to udělat v Céčku a netuším jak. Jediné co zmůžu je změnit dole pixel a když to dám do cyklu, mění se to úplně jinde než chci.

 
Nahoru Odpovědět
29.11.2014 19:44
Avatar
Odpovídá na D8sGust
Luboš Běhounek Satik:29.11.2014 20:33

Jak to děláš? Pošli kód :)

Nahoru Odpovědět
29.11.2014 20:33
https://www.facebook.com/peasantsandcastles/
Avatar
D8sGust
Člen
Avatar
D8sGust:30.11.2014 13:50

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// test ukazatele

// napověda na encyklopedii wiki
int main()
{
FILE* soubor = fopen("lena.bmp", "r+b");
if (soubor == NULL)
{
perror("Chyba pri otevirani souboru");
return 0;
}
// zjistit delky souboru
if (fseek(soubor, 0, SEEK_END) != 0)
{
perror("Chyba fseek");
goto close; // pouzivat jen vyjmecne
}

// pouze bin rezim
long delkaSouboru = ftell(soubor);
if (delkaSouboru == EOF)
{
perror("Chyba ftell");
goto close;
}
printf("Delka souboru je %ld bytu. \n", delkaSouboru);
// alokujeme pamet pro pole bytu na halde, probereme priste
unsigned char* buffer = malloc(delkaSou­boru* sizeof(unsigned char));
if (buffer == NULL)
{
perror("Chyba pri alokaci pameti na halde");
goto close;
}
rewind(soubor); // pretocime na zacatek
size_t nacteno = fread(buffer, sizeof(unsigned char), delkaSouboru, soubor);
if (nacteno != delkaSouboru)
{
perror("Chyba pri cteni souboru");
goto free;
}

int offset = ((int)(buffer + 18));
int sirka = ((int)(buffer + 18));
int vyska = ((int)(buffer + 22)); // posun o 18 B unsigned char jeden B

unsigned char* pixely = buffer + offset;

/*pixely[0] = 255; // blue
pixely[1] = 255; //green
pixely[2] = 255; // red
pixely[200] = 255; */
for (int x = 0; x <100; x++)
{
pixely[x] = 255;
}
// dalsi sloupec je sirka * 3

rewind(soubor);
size_t ulozeno = fwrite(buffer, sizeof(unsigned char), delkaSouboru, soubor);

if (ulozeno != delkaSouboru)
{
perror("Chyba pri ukladani souboru");
goto free;
}

printf("%d x %d \n", vyska, sirka);

free:
free(buffer);
close:
if (fclose(soubor) == EOF)
{
perror("Chyba pri zavirani souboru");
}
return 0;
}
"Velikost obrázku by měla být 512x512. Jde mi hlavně o ty funkce Pixely[1] apod. s tím cyklem."

 
Nahoru Odpovědět
30.11.2014 13:50
Avatar
Libor Šimo (libcosenior):30.11.2014 15:57

Veľmi do toho nevidím, ale táto časť vyhadzuje chybu:

for (x = 0; x <100; x++)
    {
        pixely[x] = 255;
    }
Nahoru Odpovědět
30.11.2014 15:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
D8sGust
Člen
Avatar
D8sGust:30.11.2014 18:21

Nešlo by to nějak upravit, aby to změnilo okrajové pixely ? Ostatní by mělo být dobře, jen tento cyklus nějak opravit.

 
Nahoru Odpovědět
30.11.2014 18:21
Avatar
Odpovídá na D8sGust
Libor Šimo (libcosenior):30.11.2014 19:41

unsigned char* buffer = malloc(delkaSou­boru* sizeof(unsigned char));
toto
s týmto
int offset = ((int)(buffer + 18));
int sirka = ((int)(buffer + 18));
int vyska = ((int)(buffer + 22));
sa mi nezdá, ale neriešil som to

Nahoru Odpovědět
30.11.2014 19:41
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
D8sGust
Člen
Avatar
D8sGust:30.11.2014 22:00

A vy jak by jste napsali program, aby to udělalo rámeček ? Nějaký universal, já už bych se s tím potom pohrál.

 
Nahoru Odpovědět
30.11.2014 22:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.