Не могу изменить размер jpeg

Код
<b>try</b>
 <b>try</b>
 jpg := TJpegImage.Create;
 jpg.LoadFromFile(OpenPictureDialog1.Files[<b>0</b>]);
 jpg.SetSize(<b>1000</b>, <b>667</b>);
 jpg.SaveToFile('C:\1.jpg');
 <b>finally</b>
 jpg.Destroy;
 <b>end</b>;
падает с ошибкой:Project ImageSign.exe raised exception class EInvalidGraphicOperation with message 'Cannot change the size of a JPEG image'.Что не так?
8 ответов

переведите jpeg в BMP (Tbitmap), измените ему размер (ну хоть через canvas.copyrect()) и загоните обратно в jpeg


jpg := TJpegImage.Create;
 jpg.LoadFromFile(OpenPictureDialog1.Files[<b>0</b>]);
 jpg.DIBNeeded;
<i>// jpg.SetSize(1000, 667);// падает</i>
 jpg.Height:= <b>1000</b>;
 jpg.Width := <b>667</b>;
 jpg.JPEGNeeded;
 jpg.SaveToFile('C:\1.jpg');
Так тоже падает с той же самой ошибкой. jpg.DIBNeeded; - это же и есть преобразование в bmp?


afaik не получится этого сделать. В D7, кстати, этого метода (TJpegImage.SetSize)нет вообще. D2009 действительно стабильно выдает ошибку. (на других нет возможностипроверить).Сделай как уже посоветовали через Bitmap.Для примера:http://www.swissdelphicenter.ch/en/showcode.php?id=1896 http://forum.sources.ru/index.php?showtopic=77652ЗЫ В D2009 TJPEGImage не документирован совсем, решили отказатьсяили я что то упустил?


У меня 2006.Это же долго так конвертировать, а мне нужно пачкой jpeg пережимать и скорость критична.Сторонних компонентов нет, для работы? Или как нибудь через DirecX, OpenGL?


мне нужно пачкой jpeg пережимать и скорость критична.
А может, лучше это сделать внешней прогой? Например, в комплекте с xnView идет такая.Заодно можно, не заморачиваясь с потоками, запараллелить весь процесс (если, конечно, на компе несколько ядер/процов).


Это же долго так конвертировать, а мне нужно пачкой jpeg пережимать и скорость критична.
А как Вы хотели и как, по-Вашему, это делают те самые сторонние компоненты и утилиты?Без промежуточного битмапа не обойтись, а скоростью все нормально будет - попробуйте.


Сторонних компонентов...ImageEn?


Это же долго так конвертировать
В смысле кода придется писать заметно больше, чем 4 строчки? Боюсь, что так :)
а мне нужно пачкой jpeg пережимать и скорость критична.Сторонних компонентов нет, для работы? Или как нибудь через DirecX, OpenGL?
Посмотрите в сторону GDI+:Delphi Kingdom RSDNДалее в гуглю