Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2007, 17:27   #1
Aslan
Пользователь
 
Регистрация: 05.07.2007
Сообщений: 29
Сообщение Использование JPEG в Delphi 7

Добрый день!
Возникают поблемы при использовании JPEG модуля в Delphi 7.

1. Если высота картинки 1 пиксель тогда может возникать ошибка "Scan line index out of range.". Как с этим боротся?
Например:
var
JPEGImage1 : TJPEGImage;
BMP : TBitmap;
...
JPEGImage1.LoadFromFile(S);
...
BMP.Assign(JPEGImage1); { сбой при размере картинки высотой 1 пиксель}


2. Как можно открыть JPEG с сжатием CMYK, а не RGB?
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
Aslan вне форума Ответить с цитированием
Старый 28.07.2007, 14:32   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

if JPEGImage1.Height > 1 then ...
//что ты увидишь в картинке высотой в 1 пиксель?
//если обязательно должен быть битмап, заполни битмап линией в один пиксель любого цвета
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.07.2007, 14:59   #3
Aslan
Пользователь
 
Регистрация: 05.07.2007
Сообщений: 29
Печаль

Цитата:
Сообщение от mutabor Посмотреть сообщение
if JPEGImage1.Height > 1 then ...
//что ты увидишь в картинке высотой в 1 пиксель?
//если обязательно должен быть битмап, заполни битмап линией в один пиксель любого цвета
Эта ошибка проявляется только в JPEG (т. е. TJPEGImage), а с TBitmap никакой ошибки нет! Размер картинки нет возможности изменить, размеры Height и Width в TJPEGImage только для чтения Где взять альтернативу jpeg.pas Delphi 7?
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
Aslan вне форума Ответить с цитированием
Старый 31.07.2007, 00:35   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Поищи компоненты графические.

Цитата:
var
JPEGImage1 : TJPEGImage;
BMP : TBitmap;
...
JPEGImage1.LoadFromFile(S);
...
BMP.Assign(JPEGImage1); { сбой при размере картинки высотой 1 пиксель}
тут указано что сбой при конвертации в bmp, не при загрузке из файла, или все таки при загрузке?

В первом посте имел в виду следуещее: если сбой именно в этой строке BMP.Assign(JPEGImage1); то какая разница какого цвета будет полоса из одного пикселя. Это можно обойти:
if JPEGImage1.Height > 1 then BMP.Assign(JPEGImage1) else
begin
bmp.width:=jpegimage1.width;
bmp.Height :=jpegimage1.Height;
bmp.canvas.lineto(jpegimage1.width, 0);
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 31.07.2007, 10:48   #5
Aslan
Пользователь
 
Регистрация: 05.07.2007
Сообщений: 29
По умолчанию

Это конечно может и выход. Но это не мой стиль. Моя программа используется для работы с JPEG изображениями (что-то типа ACDSee или XnViewer), поэтому для меня не приемлемо. Ошибка также проявляется при таком коде (полноэкранный режим):

Form2.Canvas.StretchDraw(Rect(X, Y, W + X, H + Y), JPEGImage1);

в процедуре FormPaint(Sender: TObject);
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
Aslan вне форума Ответить с цитированием
Старый 31.07.2007, 10:57   #6
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Может это поможет:
http://programmersforum.ru/showthread.php?t=5436
Alex21 вне форума Ответить с цитированием
Старый 31.07.2007, 16:18   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Ошибка также проявляется при таком коде (полноэкранный режим):

Form2.Canvas.StretchDraw(Rect(X, Y, W + X, H + Y), JPEGImage1);
Какая ошибка? Когда?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 31.07.2007, 16:26   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

у д а л е н о
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 31.07.2007 в 17:29.
mutabor вне форума Ответить с цитированием
Старый 31.07.2007, 19:35   #9
Aslan
Пользователь
 
Регистрация: 05.07.2007
Сообщений: 29
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Какая ошибка? Когда?
После загрузки JPEG, в процедуре OnPaint формы
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
Aslan вне форума Ответить с цитированием
Старый 01.08.2007, 14:58   #10
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Не зная какая ошибка трудно что-то сказать. Вообще OnPaint может выполняться довольно часто, и вешать на нее такие функции как StretchDraw я бы не стал. Лучше иметь буферный битмап с масштабированной картинкой и выводить его обычным Draw. А картинку масштабировать лишь по команде пользователя.

Но в любом случае это приведет лишь к заторможенности, а не к ошибке.
Попробуй для проверки просто замени jpeg на битмап. Будет возникать или нет.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jpeg warmbabe Общие вопросы по Java, Java SE, Kotlin 2 26.02.2010 20:14
jpeg All517 БД в Delphi 15 22.11.2007 14:31
Использование EhLib 4.1 в Delphi 2006 beketova Компоненты Delphi 2 15.11.2007 09:30
Использование JavaScript в Delphi... Valdis Общие вопросы Delphi 2 27.09.2007 08:45
Использование функции Excel из Delphi Геля Общие вопросы Delphi 3 07.06.2007 07:33