Portál AbcLinuxu, 8. května 2025 22:46

Dotaz: prace s obrazky v C

22.3.2009 15:20 Tommy.86 | skóre: 4
prace s obrazky v C
Přečteno: 764×
Odpovědět | Admin

Dobry den,

potreboval bych poradit jak zmenit velikost obrazku (bmp, jpg) do urciteho rozmeru a pak upraveny obrazek ulozit do pole.

 

Dekuji

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 22.3.2009 15:33 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: prace s obrazky v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
libgd?
22.3.2009 17:37 Tommy.86 | skóre: 4
Rozbalit Rozbalit vše Re: prace s obrazky v C

neco blizsiho k tomu?

Luboš Doležel (Doli) avatar 22.3.2009 18:01 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: prace s obrazky v C
Co bližšího? Je to běžná zdokumentovaná knihovna.
25.3.2009 01:54 Tommy.86 | skóre: 4
Rozbalit Rozbalit vše Re: prace s obrazky v C

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);
}

25.3.2009 08:19 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: prace s obrazky v C
Příloha:
skoda jen ze neumi pracovat s obrazky ve formatu bmp
Napsat 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...
I am always ready to learn although I do not always like to be taught. (W. Churchill)
Fuky avatar 23.3.2009 11:54 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: prace s obrazky v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
ImageMagick je výborný program, tak proč nevyužít přímo jeho knihovny libWand, libMagick. Hned první příklad wand.c využíva fci MagickResizeImage().
-- RÁMO: psí tábor , ETriatlon: Výuka plavání
25.3.2009 01:37 Tommy.86 | skóre: 4
Rozbalit Rozbalit vše Re: prace s obrazky v C

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 :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.