[ igorx @ 06.04.2006. 21:25 ] @
Program za zamenu plave boje crvenom:

#include <stdio.h>
main()
{
FILE *fp1,*fp2;
int c,n,m,l,d;
fp1=fopen("c:\slika.jpg","rb");
fp2=fopen("c:\slika2.jpg","wb");
for (n=1;n<119;n++)
putc(fgetc(fp1),fp2);
for (n=479;n>=0;--n)
{
for (m=319;m>=0;--m)
{
c=fgetc(fp1);
l=c/16;
d=c-(l*16);
if(l==4)l=1;if(l==0xc)l=0x9;
if(d==4)d=1;if(d==0xc)d=0x9;
c=l*16+d;
putc(c,fp2);
}}
fclose(fp1);fclose(fp2);}

Gde sam pogresio?
[ z@re @ 07.04.2006. 02:07 ] @
Preporuka. Zamjeni svoje sa ovim :

Code:

fp1=fopen("c://slika.jpg","rb");
fp2=fopen("c://slika2.jpg","wb");


Jer se backslash unutar stringa konta kao posebna sekvenca, u spoju sa iducim znakom. Recimo "\n" za newline i slicno. U tvom slucaju kompajler pokusava prokuzit sekvencu "\s".

A onda...imas gresku u algoritmu za konverziju negdje. Nikad nisam ovo rucno radio, pa ti ne mogu pomoc.
[ X Files @ 07.04.2006. 07:39 ] @
Citat:

fp1=fopen("c://slika.jpg","rb");
fp2=fopen("c://slika2.jpg","wb");


ili:

fp1=fopen("c:\\slika.jpg","rb");
fp2=fopen("c:\\slika2.jpg","wb");

ili:

fp1=fopen("c:/slika.jpg","rb");
fp2=fopen("c:/slika2.jpg","wb");

[ Alex21 @ 07.04.2006. 08:01 ] @
Odakle ti ovaj algoritam?

Osim ako nije neko tricky rješenje nekog ingenioznog matematičara, sumnjam da možeš mijenjat boje u jpg slici na ovaj način.
JPEG kompresija poprilično je zahtjevna. Procdura dekodiranja otprilike izgleda:
Huffman dekodiranje -> Inverzno DPCM kodiranje -> Inverzna kvantizacija -> Inverzna Disktretna Kosinusna Transformacija -> ....

Kad bi to mogli strpat u 5 linija golog c++ koda, eh ... di bi sutra bili. :)
[ igorx @ 07.04.2006. 09:15 ] @
Jel moze neko da mi posalje kod za JPEG?
[ X Files @ 07.04.2006. 09:38 ] @
Hm...

Kad je u pitanju JPG (koji nije 'linearan' format) pretpostavljam da je najbolje potraziti
na netu neke besplatne biblioteke koje ce JPG uciniti prividno 'lineranim', pa da se moze
sa njime raditi 'kroz petlju'.

Kao jedna od mogucnosti preostaje konvertovanje iz JPG i BMP pa da se nastavi rad sa
BMP-om. Doduse, ovo resenje nije bas najidealnije jer bi se svakom iteracijom potencijalno
gubilo na kvalitetu, sto je dobro poznato za JPG.

Mozda bi vredelo pogledati sajt:
http://www.efg2.com/Lab/
... koji doduse jeste za Delphi, ali source kod za takve stvari je u principu samo pitanje
matematike, sto se lako 'cita' i tumaci.
[ Alex21 @ 07.04.2006. 10:47 ] @
S WindowsXp dolazi GDI+ biblioteka (daleko napredniji library od standarnog GDI) : gdi.dll,
koja sadrži Image klasu za rad nad slikama tipa: BMP, ICON, GIF, JPEG, Exif, PNG, TIFF, WMF, i EMF -> više u MSDN-u.

Kod učitavanja slike ona se konvertira u BMP (u RAM-u) te se tamo mogu radit obrade, pa se pukne natrag u JPG.

Što se tiče gubitka kvalitete kod obrade JPEG slika,
ona je neizbježna osim kod nekih jednostavnijih operacija; rotiranje i flipanje ,opet uz određene uvjete na sliku.
Transformacije JPEG slika bez gubitaka su ograničene samim profocesom kodiranja slike.