Страница 1 из 2
Не поддерживается формат JPG
Добавлено: 11 окт 2005, 19:59
maelz
При помещении на форму компонента OpenPictureDialog1 в фильтре уже есть формат jpg и jpeg, но при компиляции в списке поддерживаемых форматов при открытии диалога jpg отсутствуют.
Помогите что-ли...
Добавлено: 11 окт 2005, 21:34
Хыиуду
Надо удалить из фильтров автоматически созданные записи относительно jpeg и jpg и создать свою. Все будет работать.
Добавлено: 12 окт 2005, 15:30
LAngel
а может стоит добавить в юзез JPEG ?
Добавлено: 31 окт 2005, 22:35
Хыиуду
А вот такой вопрос. Мне нужно разбить изображение на квадратики и раскидать их по форме (типа паззла). Изображение лежит в файле jpg. Сначала я попробовал сделать битмап и загрузить в него этот файл, но он не согласился, нет, мол, только бмп. Тогда я создал image, загрузил в него этот jpg, а куски пытался вырезать и врисовать на форму функцией bitblt. Выдает ошибку Can only modify an image if it cotains a bitmap. Как после начала программы перегнать jpg, загруженный в image, в битмап?
Добавлено: 31 окт 2005, 22:46
Duncon
Попробуй создать несколько ячеек и в каждую грузи по маленькой картинке...
Добавлено: 31 окт 2005, 23:54
Хыиуду
Невозможно, количество картинок, на которые разбивается основная, задаются юзером. Среднее разбиение - 840х560 разбивается на квадратики 40х40, получается около 300 квадратиков.
Добавлено: 01 ноя 2005, 08:18
LAngel
Я сталкивался с подобным.
Дело в том, что у Image есть свойство Picture В котором храниться картинка. Причем, если картинка загружается в формате JPG в Picture.bitmap пусто и при редактировании вылетает ошибка. Я обходил это таким путем (кусок кода для открывания JPEG картинки в Image1 с преобразованием):
Код: Выделить всё
if OpenPictureDialog1.Execute then
with TBitMap.Create do try
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Width := Image1.Picture.Width;
Height := Image1.Picture.Height;
Canvas.Draw(0, 0, Image1.Picture.Graphic);
Image1.Picture.Bitmap.Width := Width;
Image1.Picture.Bitmap.Height := Height;
BitBlt(Image1.Picture.Bitmap.Canvas.Handle, 0, 0, Width, Height,
Canvas.Handle, 0, 0, SRCCOPY);
finally
Free;
end;
Добавлено: 01 ноя 2005, 10:19
Хыиуду
LAngel, спасибо!
Добавлено: 01 ноя 2005, 22:59
Хыиуду
Сорри, поторопился я. Что-то не работает. Сам имадж преобразовывается вроде правильно, лежит себе на форме, как будто его и не трогали. Попытался я вырезать куски из Image.canvas, кидать их на форму через bitblt - ничего не кидает. Решил: может, я координаты неправильно нахожу? Попробовал втупую перенести кусок имаджа на форму:
Form1.Canvas.CopyMode:=cmsrccopy;
form1.Canvas.CopyRect(rect(0,0,100,100),image1.Canvas,rect(0,0,100,100));
application.ProcessMessages;
И опять ничего на форме не появляется.
Добавлено: 02 ноя 2005, 08:20
LAngel

А ты не к канвасу Image'а обращайся, а к канвасу Битмапа.
т.е. Image1.Picture.Bitmap.Canvas <- именно тут лежит картинка.