Portál AbcLinuxu, 8. května 2025 22:46
Dobry den,
potreboval bych poradit jak zmenit velikost obrazku (bmp, jpg) do urciteho rozmeru a pak upraveny obrazek ulozit do pole.
Dekuji
neco blizsiho k tomu?
moc se mi do toho nechtelo, ale nakonec jsem to pouzil, prace s knihovou je jednoducha a lze ji lehce pridat do vyvojoveho prostredi :), skoda jen ze neumi pracovat s obrazky ve formatu bmp
diky za radu :), jinak hodim sem nejaky priklad kodu kdyby se o to nekdo zajimal
#include "gd.h"
#include <stdio.h>
unsigned char matice[64][64];
int main()
{
gdImagePtr image_in, image_out;
FILE *zapis_obr, *nacti_obr;
int black, bod;
int x = 0, y = 20, barva, i, j;
int vyska, sirka;
nacti_obr = fopen("00.gif", "rb"); //nacteni gif 30x23
image_in = gdImageCreateFromGif(nacti_obr);
fclose(nacti_obr);
sirka = gdImageSX(image_in);
vyska = gdImageSY(image_in);
barva = gdImageGetPixel(image_in, x, y); //ziskani barvy pixelu
gdImageSetPixel(image_in, 10, 0, bod); //zmena barvy jednoho pixelu
image_out = gdImageCreate(64, 64);
gdImageCopyResized(image_out, image_in, 0, 0, 0, 0, 64, 64, sirka, vyska); //zmena velikosti obrazku na 64x64
for(i = 0; i < 64; i++) //vypis obrazku do pole
{
for(j = 0; j < 64; j++)
{
matice[j][i] = gdImageGetPixel(image_in, i, j);
}
}
printf("barva: %d, barva %d, vyska %d, sirka: %d\n", barva, matice[10][0], vyska, sirka);
system("pause");
zapis_obr = fopen("01.png", "wb");
gdImagePng(image_out, zapis_obr); //zapis na vystup - png
fclose(zapis_obr);
gdImageDestroy(image_in);
gdImageDestroy(image_out);
}
skoda jen ze neumi pracovat s obrazky ve formatu bmpNapsat si podporu pro BMP by neměl být takový problém, protože BMP je pouze hlavička a co 3 bajty to jeden pixel... Hodil jsem do přílohy můj pokus o práci s BMP - ale je to programovaný před 4 roky, takže ten kód vypadá dost ohavně, ale myslím, že +- fungoval...
koukal jsem na to a urcite to neni spatny napad, akorat ze jsem nenasel zpusob jak nacpat knihovny do devcpp, teda pokud znate jine vyvojove prostredi se kterym to slape v pohode, tak sem s nim, klidne vyzkousim :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.