|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.07.2007, 17:27 | #1 |
Пользователь
Регистрация: 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?
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
|
28.07.2007, 14:32 | #2 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
30.07.2007, 14:59 | #3 |
Пользователь
Регистрация: 05.07.2007
Сообщений: 29
|
Эта ошибка проявляется только в JPEG (т. е. TJPEGImage), а с TBitmap никакой ошибки нет! Размер картинки нет возможности изменить, размеры Height и Width в TJPEGImage только для чтения Где взять альтернативу jpeg.pas Delphi 7?
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
|
31.07.2007, 00:35 | #4 | |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Поищи компоненты графические.
Цитата:
В первом посте имел в виду следуещее: если сбой именно в этой строке 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)
Проверь себя! Онлайн тестирование | Мой блог |
|
31.07.2007, 10:48 | #5 |
Пользователь
Регистрация: 05.07.2007
Сообщений: 29
|
Это конечно может и выход. Но это не мой стиль. Моя программа используется для работы с JPEG изображениями (что-то типа ACDSee или XnViewer), поэтому для меня не приемлемо. Ошибка также проявляется при таком коде (полноэкранный режим):
Form2.Canvas.StretchDraw(Rect(X, Y, W + X, H + Y), JPEGImage1); в процедуре FormPaint(Sender: TObject);
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
|
31.07.2007, 10:57 | #6 |
With best regards
Участник клуба
Регистрация: 20.04.2007
Сообщений: 1,448
|
Может это поможет:
http://programmersforum.ru/showthread.php?t=5436
Life is too short, play more...
Как правильно задавать вопросы |
31.07.2007, 16:18 | #7 | |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
|
31.07.2007, 16:26 | #8 |
Телепат с дипломом
Старожил
Регистрация: 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. |
31.07.2007, 19:35 | #9 |
Пользователь
Регистрация: 05.07.2007
Сообщений: 29
|
Если бы строители строили дома так, как программисты пишут программы, тогда первая залётная птичка разрушела весь город
|
01.08.2007, 14:58 | #10 |
Телепат с дипломом
Старожил
Регистрация: 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)
Проверь себя! Онлайн тестирование | Мой блог |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |