Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.041 c
9-1146876433
TDummyCube
2006-05-06 04:47
2007.04.08
Как найти локальную матрицу, если есть две глобальные?


2-1173894070
Shand
2007-03-14 20:41
2007.04.08
Чат


6-1161591532
Axis_of_Evil
2006-10-23 12:18
2007.04.08
про TWSocket. дубль 2


15-1173844847
balepa
2007-03-14 07:00
2007.04.08
WMKeeper


2-1174060080
Malik
2007-03-16 18:48
2007.04.08
Вопрос по SortGrid y





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский