2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Сжатие картинки. (на Делфи)
Сообщение22.12.2009, 14:14 
Заблокирован


05/07/09

265
Рязань
Пытаюсь сжать картинку по горизонтали - коэффициент сжатия 60%.
Однако в результате получается полосатая картинка. Не пойму где ошибка.
Подскажите что не так в алгоритме.

x1:=image1.Picture.Width;
x2:=x1*i1 div 100;
y1:=image1.Picture.Height;
y2:=y1*i2 div 100;
image4.Picture:=image3.Picture;
image4.Width:=x2;
image4.Height:=y1;
for j:=0 to y1 do
begin
ii1:=0;
s11:=0;
s21:=0;
s31:=0;
s12:=0;
s22:=0;
s32:=0;
d:=0;
for i:=0 to x2 do
begin
ii2:=(i*100+(i1 div 2)) div i1;
for ii:=ii1 to ii2 do
begin
s11:=s11+(image1.Canvas.Pixels[ii,j] mod 256);
s21:=s21+((image1.Canvas.Pixels[ii,j] div 256) mod 256);
s31:=s31+((image1.Canvas.Pixels[ii,j] div (256*256)));
end;
if (ii2>=ii1) then
begin
c1:=((s11*i1+50) div 100)-s12;
if c1<0 then c1:=0;
if c1>255 then c1:=255;
c2:=((s21*i1+50) div 100)-s22;
if c2<0 then c2:=0;
if c2>255 then c2:=255;
c3:=((s31*i1+50) div 100)-s32;
if c3<0 then c3:=0;
if c3>255 then c3:=255;
image4.Canvas.Pixels[i,j]:=c1+c2*256+c3*256*256;
s12:=s12+c1;
s22:=s22+c2;
s32:=s32+c3;
ii1:=ii2+1;
d:=1;
end
else
begin
if i>0 then
begin
d:=d+1;
{d не играет роли, как выяснилось}
end
else
begin
s12:=(image1.Canvas.Pixels[0,j] mod 256);
s22:=((image1.Canvas.Pixels[0,j] div 256) mod 256);
s32:=(image1.Canvas.Pixels[0,j] div (256*256));
image4.Canvas.Pixels[0,j]:=image1.Canvas.Pixels[0,j];
end;
end;
end;
end;
image2.Picture:=image4.Picture;

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group