Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

JPEG   Найти похожие ветки 

 
Ezorcist   (2007-03-09 23:44) [0]

Добрый вечер!

На диске есть файл f.jpeg как мне узнать цвет пиксела [x,y] ?

bmp:=TBitmap.Create;
jp:=TJPEGIMAGE.Create;
jp.LoadFromFile("f.jpeg");

bmp.Width:=jp.Width;
bmp.Height:=jp.Height;
bmp:=TBitmap(JP);

bmp.Canvas.Pixels[x,y]

Так не выходит....


 
DrPass ©   (2007-03-09 23:48) [1]


> bmp.Width:=jp.Width;
> bmp.Height:=jp.Height;
> bmp:=TBitmap(JP);

bmp.Assign(jp);


 
Ezorcist   (2007-03-10 00:17) [2]

И еще вопрс:

var j:tjpegimage; bmp:Tbitmap; i:integer;
begin

j:=tjpegimage.Create;
bmp:=Tbitmap.Create;

bmp.Width:=10;
bmp.Height:=10;
bmp.Canvas.Pixels[0,0]:=rgb(1,2,3);

i:=bmp.Canvas.Pixels[0,0];
showmessage(inttostr(getRvalue(i))+" "+inttostr(getGvalue(i))+" "+inttostr(getBvalue(i)));

j.CompressionQuality:=100;
j.Assign(bmp);
j.Compress;

j.SaveToFile("C:\file.jpg");    //1
j.Free;                         //2
j:=tjpegimage.Create;           //3
j.LoadFromFile("C:\file.jpg");  //4

bmp.Free;
bmp:=TBitmap.Create;

bmp.Width:=10;
bmp.Height:=10;
bmp.Assign(j);

i:=bmp.Canvas.Pixels[0,0];
showmessage(inttostr(getRvalue(i))+" "+inttostr(getGvalue(i))+" "+inttostr(getBvalue(i)));

1) Если CompressionQuality:=100 то это означает что потерь в цвете не будет?
2) Почему если //1 //2 //3 //4 исключить то оба сообщения напишут 1 2 3, а если нет, то второе сообщение будет 2 2 2 ?


 
Ezorcist   (2007-03-10 15:35) [3]

Подскажите в чем дело пожалуйста?)


 
RASkov   (2007-03-10 15:46) [4]

> [3] Ezorcist   (10.03.07 15:35)

Попробуй
bmp.PixelFormat:=<отличный от pfDevice>


 
Virgo_Style ©   (2007-03-10 15:46) [5]

1. afaik, потерь в цвете быть вообще не должно, только в качестве.
2. разные программы, как правило, дают разные результаты.


 
RASkov   (2007-03-10 15:59) [6]

> 1. afaik, потерь в цвете быть вообще не должно, только в
> качестве.

Уже может быть неверным цвет. Т.е. его состовляющие...

> 2. разные программы, как правило, дают разные результаты.

Программа-то одна - авторская. :)


 
DrPass ©   (2007-03-10 16:52) [7]


> 1) Если CompressionQuality:=100 то это означает что потерь
> в цвете не будет?

Да нет, будут. Только минимальные :)
> 2) Почему если //1 //2 //3 //4 исключить то оба сообщения
> напишут 1 2 3, а если нет, то второе сообщение будет 2 2
> 2 ?


Не претендую на объективность (в исходниках TJpegImage не колупался), но подозреваю, что TJpegImage просто хранит отдельно несжатую картинку. И если ты загружаешь изображение из файла, она создается заново, а если просто делаешь j.Assign(bmp)/bmp.Assign(j), то картинка остается той же.


> 1. afaik, потерь в цвете быть вообще не должно, только в
> качестве.

Потери в качестве = потери в цвете. Кроме цвета, у пикселей вообще-то никаких других характеристик нет


 
Virgo_Style ©   (2007-03-10 18:30) [8]

Видимо, мое понимание выражения "потери в цвете" отличается от вашего -)


 
Ezorcist   (2007-03-11 22:10) [9]

А что вообще значит потеря в качестве? В моем представлении это различие между цветами исходного и полученного пикселя. ??

Вообще можно сохранить картинку так, что бы цвета всех пикселей остались неизменными, и в тоже время присутствовало сжатие данных, те есть формат с сжатием без потерь? (Или единственный способ - сохранить в bmp, а потом упаковать?)


 
DrPass ©   (2007-03-11 22:14) [10]


> Вообще можно сохранить картинку так, что бы цвета всех пикселей
> остались неизменными, и в тоже время присутствовало сжатие
> данных, те есть формат с сжатием без потерь?

Есть, конечно. Именно это делает любой алгоритм архивации :) Ну и само собой, есть форматы со сжатием без потерь, например, PCX.


 
Ezorcist   (2007-03-16 13:44) [11]

2 DrPass
А именно в jpeg без потерь можно загнать?
Или тогда какой использовать формат, с которым можно было бы работать из deplhi?


 
Amoeba ©   (2007-03-16 15:57) [12]


> А именно в jpeg без потерь можно загнать?

Только если все пиксели имеют один и тот же цвет. Только пользы от этого немного.


 
Amoeba ©   (2007-03-16 16:06) [13]

> DrPass ©   (11.03.07 22:14) [10]
>
>
> > Вообще можно сохранить картинку так, что бы цвета всех
> пикселей
> > остались неизменными, и в тоже время присутствовало сжатие
> > данных, те есть формат с сжатием без потерь?
>
> Есть, конечно. Именно это делает любой алгоритм архивации
> :) Ну и само собой, есть форматы со сжатием без потерь,
> например, PCX.

Только вот на 24битном цвете PCX сжатие (в подавляющем большинстве ситуаций) будет весьма незначительным.


 
Amoeba ©   (2007-03-16 16:08) [14]


> Или тогда какой использовать формат, с которым можно было
> бы работать из deplhi?

Чем выше глубина цвета, тем меньше эффективность сжатия без потерь.


 
Ezorcist   (2007-03-16 22:02) [15]


> > Или тогда какой использовать формат, с которым можно было
> > бы работать из deplhi?
>
> Чем выше глубина цвета, тем меньше эффективность сжатия
> без потерь.


Хм... и как комментарий относиться к этой цитате?

PS Вопрос про формат все еще открыт)


 
Amoeba ©   (2007-03-19 12:51) [16]

Если нужно использовать форматы позволяющие сжатие без потерь,то понадобятся дополнительные библиотеки.
Если только считывать - то GraphicEx (бесплатно, с исходниками).
Если еще нужно и сохранять - то существующие библиотеки платные.


 
Ezorcist   (2007-03-19 15:24) [17]

А если PNG например. Там есть потери? И delphi может с ним работать без дополнительных компонентов?



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.045 c
1-1171303374
tequilla4white
2007-02-12 21:02
2007.04.08
IXMLNode.Count возвращает неверное значение


2-1174118231
Boker
2007-03-17 10:57
2007.04.08
TImage - невозможна загрузка ...??


15-1173928076
Slider007
2007-03-15 06:07
2007.04.08
С днем рождения ! 15 марта


9-1146898055
Kn1ght
2006-05-06 10:47
2007.04.08
падение тела


2-1173896890
Malik
2007-03-14 21:28
2007.04.08
Проблема с Delphi