-
Вопрос, наверное, к создателю- Дмитрию Матвееву. Дмитрий, не могли-бы вы выложить пример работы с KOLJPGImage ? я пробовал по аналогии с JpegObj, но налицо явное расхождение в методах.
-
Ну примерно так. ... {$IFDEF KOLCLASSES}{$I TMainForm.inc}{$ELSE} TMainForm = object(TObj) {$ENDIF} ... private procedure OnProgress (Sender: PObj); public JPEGImage: PJPEGImage; end;
.... procedure TMainForm.KOLForm1FormCreate(Sender: PObj); begin JPEGImage:= NewJPEGImage; //Создаем JPEGImage.OnProgress:= OnProgress; //если нужно end;
procedure TMainForm.KOLForm1Destroy(Sender: PObj); begin JPEGImage.Free; //разрушаем end;
procedure TMainForm.Button1Click(Sender: PObj); begin try JPEGImage.LoadFromFile('C:\!.jpg'); //Загружаем картинку JPEGImage.Bitmap.Draw(Form.Canvas.Handle, 100, 100); //рисуем ее
JPEGImage.Bitmap.LoadFromFile('!!.bmp'); //изменяем изображение JPEGImage.SaveToFile('!!!!!!!.jpg'); //Сохраняем jpeg except {on E: Exception do} ShowMessage('Error'); //Ошибка!!!!!!!! end; end;
procedure TMainForm.OnProgress(Sender: PObj); begin ProgressBar.Progress:= JPEGImage.Progress; Applet.ProcessMessages; // Sleep(20); //:) end;
Еще можно поиграться опциями в JCONFIG.INC. Они соответственно могут влиять на размер еще, качество кодирования\декодирования, уровень обработки ошибок.
-
Кстати есть еще CxKOLTiffJpg. Он побыстрее будет. Я в основном ориентировался на Lazarus+WinCE.
-
И не только побыстрее. Я в него добавил возможность работать с jpeg'ами практически любого размера, не выделяя память для всей картинки. Можно получать или передавать строки пикселей для упаковки или наоборот для распаковки через событие. Сегодня проверил как раз, работает.
-
-
kolmck.net
-
> JPEGImage.Bitmap.Draw(Form.Canvas.Handle, 100, 100); //рисуем > ее
Почему-то не помогает... Может быть, слово Form нужно заменить на что-то другое? (Но тогда на что? Form1 и KOLForm1 не проходят...) И ещё: что означают второй и третий параметры?
-
У меня работает, хотя конечно нужно в OnPain рисовать.
> И ещё: что означают второй и третий параметры?
Координаты X и Y, где рисовать.
-
Кстати, если кому нужно для КПК, я сделал чтение для BMP, GIF, JPG, PNG, XBM системными средствами, т.е. к коду практически ничего и не добавляется.
-
> У меня работает, хотя конечно нужно в OnPain рисовать.
А вот об этом я не подумал... Тогда, получается, надо добавить код: JPEGImage.OnPaint:= OnPaint?
-
OnPaint того, на ком рисовать хотите. Например Form.OnPaint, хотя обычно PaintBox используют.
-
Гм... А помимо OnPaint ничего похожего поставить нельзя? Просто там ситуация такая: при запуске на форме должна быть картинка. Затем её можно будет убрать, сняв в главном меню галочку, и вернуть, поставив таковую обратно. Как реализовать, не знаю - на if MainMenu1.Items[x].Checked then ... не реагирует...
-
И в чем проблемма? Вот рабочий код: .... private FJPEGImage: PJPEGImage; public ..... procedure TForm1.KOLForm1FormCreate(Sender: PObj); begin FJPEGImage:= NewJPEGImage; FJPEGImage.LoadFromFile('Disk.jpg'); end;
procedure TForm1.KOLForm1Paint(Sender: PControl; DC: HDC); begin if CheckBox1.Checked then FJPEGImage.Bitmap.Draw(DC, 0, 0); end;
procedure TForm1.CheckBox1Click(Sender: PObj); begin Form.Invalidate; end;
-
В том-то и дело, что при первом запуске он эту галочку в главном меню не видит и ничего не рисует!
-
Удивительное рядом... Поставил чекбокс не в меню - картинка появилась...
-
Ничего не понимаю. при использовании ImageDecompress компилятор выдаёт:
D:\lazarus\kol\kol\ImageDecompress.pas(67,48) Fatal: Can't find unit TextOut used by ImageDecompress
-
> Ничего не понимаю.
И что же тут непонятно? Убить нафиг модуль TextOut! :D
-
Кстати, для информации, по поводу ImageDecompress. При декодировании Jpeg, для некоторых картинок скорость может быть в несколько раз меньше (чуть ли не на порядок), чем у JpegImage, хотя обычно, примерно равны (небольшие отклонения в разные стороны). При декодировании PNG, ImageDecompress обычно немного побыстрее. Остальные форматы не тестил, за ненадобностью.:)
-
Вчера пробовал ImageDecompress, textout убить догадался, но когда пишу
uses ImageDecompress; ......... Var Image:PImageDecompress; ......... procedure TForm1.Button1Click(Sender: PObj); begin image:=NewImageDecompress; image.LoadFromFile('0933333.jpg'); // когда эту строчку пишу, то вываливается с ошибкой типа не могу запуститься потому что imgdecmp.dll не найдена, переустановка приложения (какого?) может исправит проблему. Покопал в интернете, толком не нашел. Какой выход есть из данной ситуации? XPSP2
-
сорри, торможу :)
|