2015-05-22 2 views
1

Я новичок в Pascal и Delphi, и я пытаюсь выяснить, как сжать и/или изменить размер изображения, чтобы получить его ниже 300 КБ. Я не знаю, как начать и где найти пример. Кто-нибудь знает возможно ли это? А может, показать мне или указать на пример? Я использую RAD Studio XE4 для разработки.Как изменить размер/сжать изображение, чтобы получить его ниже 300kb

Предположим, у меня есть изображение одного из наиболее часто используемых типов, например png или jpeg, и оно больше 1024 x 768. Как сделать его 1024 x 768?

+1

Вам необходимо решить, как решить проблему в первую очередь. 1. Вы хотите уменьшить или сжать? Сокращение, безусловно, потеряет информацию. Сжатие может быть потерянным или без потерь. 2. Какое изображение у вас есть? Фото лучше всего сжимать с помощью JPEG (lossy). Скриншоты часто лучше всего сжимаются с помощью PNG (без потерь). –

+0

Должна быть возможна загрузка большинства используемых типов изображений, таких как png, jpeg ... Поэтому я могу ограничить тип изображений. Но потом? Скажем, я хочу, чтобы изображение было 1024 x768, если оно больше. Как я могу это сделать? – MmynameStackflow

+1

Получить библиотеку изображений, которая поддерживает изменение размера изображения –

ответ

0

Самый простой способ изменить размер изображения, вероятно, следующее:

procedure ResizeImage(Image : TGraphic; AWidth, AHeight : Integer); 
var bmp : TBitmap; 
begin 
    bmp := TBitmap.Create; 
    try 
    bmp.PixelFormat := pf32bit; 
    bmp.Width := AWidth; 
    bmp.Height := AHeight; 
    bmp.Canvas.StretchDraw(Rect(0,0,AWidth, AHeight), Image); 
    Image.Assign(bmp); 
    finally 
    bmp.Free; 
    end; 
end; 

Заметим, что, в то время как простой, он имеет много недостатков. Вероятно, вы потеряете информацию о прозрачности. Я не уверен, будет ли сохранена метаинформация исходного изображения.

Возможно, не все графические классы поддерживают растяжку. Я тестировал с JPEG, но, возможно, png или tif не поддерживают его.

В рутине также предполагается, что класс TGraphic знает, как назначить себе растровое изображение (которое больше всего, если не все).

Что касается сжатия, многие форматы изображений уже сжимают данные, JPEG, PNG, некоторые TIFF. Если вы используете более эффективный алгоритм сжатия, чем тот, который уже доступен, это будет нелегкий подвиг.

Смежные вопросы