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

Вниз

Не работает большой Image   Найти похожие ветки 

 
Jimmy   (2006-08-14 00:42) [0]

Когда в пустуй проект вставляю Image, то он позволяет делать свои размеры 5000х5000 пикселей и затем рисовать на нем. А когда пытаюсь это сделать в своем графическом редакторе с кучей разных объектов, то даже при попытке установить размеры Image"а 2200х2200 выдается ошибка "Не хватает ресурсов" на строке Image1.Canvas.Pen.Color:=clWhite. Подскажие как быть. Заранее спасибо.


 
Мефисто   (2006-08-14 13:00) [1]


> Подскажие как быть.


Не хавать ресурсов. Отрисовывать на TGraphicControl компанентах (например TPainBox).


> Image, то он позволяет делать свои размеры 5000х5000


Я так полагаю увеличиваются размеры TBitmap. Получаем приблизительно следующее: 5000х5000х24bit т.е. 3 байта на одну точку. Щитаем, сколько минимум скушается ресурсов?


 
Jimmy   (2006-08-14 15:23) [2]

PaintBox действительно не выдает такой ошибки! По крайней мере пока.
Особо еще не тестировал. Но как тогда быть с отсутствующим свойством Picture, которое нужно для SaveToFile, и чем заменить
Form1.Image2.Picture.Assign(Form1.Image1.Picture.Bitmap);, Stretch ?


 
Stexen   (2006-08-14 17:52) [3]

Вставь памяти в комп по больше :)
2Мефисто
Только в дельфийском тбитмапе каждая точка описывается integer"ом,по-моему, так что в памяти это будет занимать
5000*5000*32 :) а вообще использовать timage, если о нем идет речь, зло!!!


 
Stexen   (2006-08-14 17:54) [4]

2Jimmy
У тебя же все равно все изображение не влазит на экран, так что выводи(храни в памяти) только то, что видит пользователь


 
Stexen   (2006-08-14 17:59) [5]

2Jimmy

> Но как тогда быть с отсутствующим свойством Picture, которое
> нужно для SaveToFile, и чем заменить
> Form1.Image2.Picture.Assign(Form1.Image1.Picture.Bitmap);
> , Stretch ?


Bitmap.SaveToFile;
или читаем мануал по разным форматам графических файлов...
///

Var
Tmp: TBitmap;
begin
 Tmp := TBitmap.Create;
 Tmp.Width := Form1.Image1.Picture.Bitmap.Width;
 Tmp.Height := Form1.Image1.Picture.Bitmap.Height;
 BitBlt(ля ля ля); //не помню параметры на память, но в мануале точно есть.
end;

Stretch --> StretchBlt;

Вот и не надо ничего юзать от image


 
Мефисто   (2006-08-14 19:44) [6]


> Stexen   (14.08.06 17:52) [3]


Конечно зло :) Это поймут, кто более менее представляет механизмы работы TImage, для начинающих это упрощенка для отрисовывания на канве TBitmap т.к. отрисовка OnPaint некоторых начинающих вгоняет в ступор (или некоторые вообще не знают для чего оно надо).


 
Jimmy   (2006-08-14 20:23) [7]

1. Если работать с Bitmap:=TBitmap.Create; то он ведет себя также как и Image: при тех же самых размерах выдает ту же ошибку. Это не выход.
2. Тот же фотошоп вроде так и делает: если рисунок большой он часто обращается к диску. Вопрос в том КАК организовать работу с рисунком, если в памяти хранится только его часть?
3. Заметил интересную вещь: если громадных Image-ей несколько, но с предельно допустимыми размерами, то ошибки нет! Если пойти по этому пути (все изображение хранить например на 4-х image-х а не на одном), то тогда возникает всего несколько вопросов. Как рисовать на них - понятно. Как выводить рисунок на экран? И как сохранять в файл? Очень хотелось бы услышать Ваши советы по этим двум вопросам. Если можно поподробнее.


 
Мефисто   (2006-08-14 21:14) [8]


> 2. Тот же фотошоп вроде так и делает: если рисунок большой
> он часто обращается к диску. Вопрос в том КАК организовать
> работу с рисунком, если в памяти хранится только его часть?
>


Файл проецируемый в физическую память (посик по: CreateFileMapping).


> 3. Заметил интересную вещь: если громадных Image-ей несколько,
>  но с предельно допустимыми размерами, то ошибки нет!


Повторим еще раз. Ресурсы не резиновые... :)


>  Как выводить рисунок на экран?


Всмысле? не понял вопроса.


> И как сохранять в файл?


Зависит от реализации всего этого действа в целом. Изучив работу с проекцией файлов в физическую память, можно будет и сохранить нужную часть в файл. Если погуглить, то по CreateFileMapping можно найти немало статей.


 
Stexen   (2006-08-15 09:43) [9]

Ну вот тот же фотошоп изначально разрабатывался под маки, в которых было очень плохо реализована работа с файлом подкачки, ввиду чего, он работает со своими файлами подкачки...
А с выводом наооборот ничего сложного нет, просто выводишь ту чусть картинки которая тебе нужна и все, для начала ты просто разберись например с форматом bmp и непосредственно считывай те части из файла которые тебе нужны...
ну и с CreateFileMapping тоже бы не помешало... :)



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

Форум: "Media";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
1-1173171684
tytus
2007-03-06 12:01
2007.04.29
Как узнать высоту заголовка окна?


2-1176237348
ppcumax
2007-04-11 00:35
2007.04.29
Как сделать паузу в цикле


2-1175955394
=Guest=
2007-04-07 18:16
2007.04.29
Количество файлов в папке


1-1172939881
nali
2007-03-03 19:38
2007.04.29
У ComboBox-a над stringgrid-ом не выпадает список...


15-1175417739
Calibr
2007-04-01 12:55
2007.04.29
Perl с HTML





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский