Vágott egy téglalap alakú jpeg
Vágott egy téglalap JPEG
Van egy probléma: le kell töltenie egy JPEG fájl, vágott egy téglalapot belőle, és mentse el a lemez doboz, ugyanabban a JPEG formátumban. Azért tettem, mert a hajó JPEG, lefordítja Bitmap, vágott egy téglalapot a bitmap, lefordítja JPEG és mentse, de valahogy nem igazán Harashi. Pozhskazhiite kérem: Lehetséges, hogy végre ez valami más?
AndreW777 # XA0; (17.03.06 19:55)
ez valahogy nem nagyon Harashi
„Mi a jó és mi a rossz?” (C)
Csak amikor konvertáló jpg-> BMP> jpg utolsó zaj jelenhet meg az első nebylo, szeretnék megszabadulni tőle.
Rövid szabad előre.
Azt állítják, hogy a forráskód Jpegcrop szabadon elérhető szoftverfejlesztők, akik szeretnék felvenni veszteségmentes JPEG vágás, hogy a szoftver.
Che valami, amit nem talált semmit. Az angol nem vagyok túl jó. Lehet, hogy valaki lesz példa, vagy valamit oroszul. Köszönöm.
Az orosz - nem valószínű. Példák a Delphi, furcsa módon, van (gyanítom, hogy ez csak a C):
Köszönöm. De rájöttem, hogy kevés. Ha nem nehéz írni konkrétabb, hol kell keresni, vagy primerchik. Hálás lennék oochen.
Most noshol. Hosszú Próbáltam, de hogyan valósítható meg az én program Delphi nem érti.
Nos, szerencsés vagy :)
Úgy döntöttem, hogy én is, veszteségmentes termés praktikus, és azt írta, (többnyire másolt jpegtran) itt van:
jsrcerr.trace_level: = jdsterr.trace_level;
srcinfo.mem ^ .max_memory_to_use: = dstinfo.mem ^ .max_memory_to_use;
AssignFile (bemeneti_fájl, SrcFName); Visszaállítása (bemeneti_fájl, 1);
AssignFile (output_file, DstFName); Átírása (output_file, 1);
A transformoption nem kezdődik
# XA0; transzformáció: = Művelet;
# XA0; vágja: = False;
# XA0; force_grayscale: = False;
# XA0; Ha (transzformáció = JXFORM_CUT) Ezután kezdődik
# XA0; # XA0; xoffs: = Rect.Left; yoffs: = Rect.Top;
# XA0; # XA0; newwidth: = Rect.Right - Rect.Left;
# XA0; # XA0; newheight: = Rect.Bottom - Rect.Top;
# XA0; end;
végén;
dst_coef_arrays: = jtransform_adjust_parameters (@srcinfo, @dstinfo,
# XA0; # XA0; # XA0; src_coef_arrays,
# XA0; # XA0; # XA0; transformoption);
jtransform_execute_transformation (@srcinfo, @dstinfo,
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; src_coef_arrays,
# XA0; # XA0; # XA0; transformoption);
Ha (Operation = JXFORM_CUT) Ezután kezdődik
# XA0; k: = dstinfo.max_h_samp_factor * DCTSIZE;
# XA0; Rect.Left: = Rect.Left div k * k;
# XA0; k: = dstinfo.max_v_samp_factor * DCTSIZE;
# XA0; Rect.Top: = Rect.Top div k * k;
# XA0; Rect.Right: = Rect.Left + dstinfo.image_width;
# XA0; Rect.Bottom: = Rect.Top + dstinfo.image_height;
végén;
használata:
1) A nyilvántartás jconfig.inc
2) A Transupp.pas, a do_transform eljárás helyett az első két sor # XA0; * DCTSIZE a div DCTSIZE (glitch fedezték fel).
3) A tulajdon használatát:
felhasználások
# XA0; Transupp, jdeferr, jerror, jmorecfg, jpeglib, cdjpeg,
# XA0; jdatasrc, JDatadst, JCTrans, JDtrans, JdAPImin, JcAPImin;
r: = téglalap (10, 10, 200, 200);
JpegTransform (SrcName, DstName, JXFORM_CUT, @r);
B r kap egy téglalap, hogy szeretnének vágni, és visszaadja, amit kivágtunk valójában - már a koordinátákat vízszintesen 16 függőlegesen 8 (ha jól értem, attól függ, hogy milyen típusú jpeg „a) Ie. vágva, hogy pontosan meghatározott területen lehetetlen, de ez a legtöbb esetben nem szükséges.
Köszönöm. Minden működik.