|
Тема
|
Как да скалирам на 50% jpeg файл и да го save-на
|
|
Автор | Fuoco (Нерегистриран) |
Публикувано | 03.11.05 15:34 |
|
Здравейте!
Как да отворя един jpeg файл, да го намаля на 50 % и да го запиша обратно на диска?
Опитах със следния код:
img: Image;
g: Graphics;
r: Rectangle;
img := Image.FromFile(filesindir);
g := Graphics.FromImage(img);
g.ScaleTransform(0.5, 0.5);
// ??? img.FromGraphics???
img.Save(filesindir + '_');
end;
но не можах да намеря начин да запиша инстанцията на Graphics във файл, или в Image обект.
Как трябва да стане това?
| |
Тема
|
Re: Как да скалирам на 50% jpeg файл и да го save-на
[re: Fuoco]
|
|
Автор | zahical (Нерегистриран) |
Публикувано | 03.11.05 18:46 |
|
Най-елементарният начин е следният: (C#)
Bitmap b=(Bitmap)Bitmap.FromFile(fileName);
Size bmpSize=b.Size;
bmpSize.Height/=2;
bmpSize.Width/=2;
Bitmap targetBmp=new Bitmap(b,bmpSize);
targetBmp.Save(newFileName,System.Drawing.Imaging.ImageFormat.Jpeg);
Проблема с този подход обаче е, че:
а) Не можеш да контролираш качеството на интерполацията - т.е. дали скалирането ще е NearestNeighbour или Bicubic.
б) Не можеш да зададеш степента на компресията във новия JPEG.
За решаване на проблем б) виж http://support.microsoft.com/kb/324790/EN-US/ . Проблем а) също не е сложен за решаване -- ако имаш нужда пиши пак.
| |
|
|
|
|