Программа для изменения размера фоток. И программа для изменения структуры папок

Пишу я тут очередной адалтовый сайт. На этот раз за дело взялсо очень серьезно. Написал движок на пыхе, получился самый большой мой движок. Аж 10кб весит. :). И уже 4 проги на делфях, две простенькие из которых я опубликую. Я их правда совместил в одну, но думаю не страшно.

По-быстренькому привел ее в более менее презентабельный вид,спрятал все лишнее, приписал капшены на кнопки, и вообще описал как мог. 🙂

resizer

Первая часть. Ресайз фоток. Иначе говоря изменение размера фотографий. Чтобы подогнать фотки в дизайн, и при этом не переживать их вручную, и не заставлять браузер делать это я и сел за делфи.

Кнопка добавки в список парсит не только файлы в папке, но и файлы в подпапках. В общем это слегка измененный скрипт из этой записи. Далее, после нажатия на кнопку «обработка списка» запускается цикл по очереди загружающий, пережимающий, и сохраняющий фотку. Поэтому прежде чем обрабатывать фотки делайте копию. Если фотка уже заданной ширины, то тянуть прога ее не будет. Обрабатывает только жипеги.

При большом объеме может показаться что она зависла, но это врядли, хотя сначала у меня была утечка памяти =))) Но теперь все нормально даже если задать обработку нескольких гигов. Это хоть и займет несколько десятков минут, но и памяти не более 10мб.

Вторая часть. Это тот же скрипт получения списка всех файлов в папке и подпапках, что и в первой части, но модифицирован он уже гораздо сильнее.  Это скрипт переименовывает содержимое папки, так чтобы объекты шли по номерам от 1 до конца. Переименовывает файлы в подпапках и сами подпапки. Если в папке будет подпапка и файл, то они будут переименованны по порядку, так что будьте внимательны. Файлы должны быть только jpg, потому что всеравно такое расширение подставляется при переименовке.

Для примера. Есть у нас такая структура:

papka/
papka/s1/
papka/s1/foto1.jpg
papka/s1/foto2.jpg
papka/s1/all.PNG
papka/s2/
papka/s2/1.jpg
papka/s2/foto3.jpg
papka/s2/foto4.jpg
papka/s2/foto5.jpg
papka/старое/
papka/старое/delet.jpg
papka/123.jpg

задаем главной папку «papka/» и на выходе получаем

papka/
papka/1/
papka/1/1.jpg
papka/1/2.jpg
papka/1/3.jpg
papka/2/
papka/2/1.jpg
papka/2/2.jpg
papka/2/3.jpg
papka/2/4.jpg
papka/3/
papka/3/1.jpg
papka/4.jpg

(Цветом выделил моменты, которые стоит учитывать заранее.)

Конечно понимаю что проги просты, а предназначение второй вообще не очевидно, но все же.

Скачать


Автор: Elsper.ru


VN:F [1.9.14_1148]
Rating: 10.0/10 (2 votes cast)
Программа для изменения размера фоток. И программа для изменения структуры папок, 10.0 out of 10 based on 2 ratings

10 thoughts on “Программа для изменения размера фоток. И программа для изменения структуры папок

  1. Прикольная прога, особенно как она в под-папки разсовывает файлы.
    Я как прочитал заголовок, сразу подумал про Fast Stone Image Viewer, очень удобная прога +пережимать фотки может, попробуй.
    На счёт работы с под-папками не знаю.

  2. Ну прог подобных наверное не мало, и они наверное поддерживают остальные расширения.
    Но я вот тоже написал, и решил поделиться 🙂

  3. Я знаю эту процедуру.

    Но мне кажется что ее использование замедлит работу. Что думаешь?

  4. Хотя да ты прав.
    Ведь работа с файлами сама по себе идет медленно, и время используемое на отрисовку экрана слишком мало чтобы как-то заметно замедлить работу.

  5. замедлит, но не на много. проводил тесты 🙂
    замедление становится критичным, когда ты не картинки пережимаешь, что относительно ресурсоемко, а, например, проверяешь что то или копируешь строки или создаешь/наполняешь массивы — т.е. выполняешь много много мелких и простых действий, тогда при длительном выполнении программы отставание идет на минуты. Чес, слово 🙂

  6. А у меня с Application.ProcessMessages; отставание было и на часы…

    Elsper, выложи пожалуйста код для изменения размера фотографий.
    Вот тоже появилась надобность пережать программно картинки, иначе никак..

  7. выкладываю как есть в коде моей проги

    var
    in_img, out_img: TGPImage;
    g: TGPGraphics;
    out_width, out_height, cou: Integer;
    sclx:extended; fname,fname2:string;
    encoderClsid: TGUID;
    begin
    button4.Enabled:=false;

    for cou := 0 to memo4.lines.Count-1 do
    begin

    fname:=memo4.lines[cou];
    try

    out_width :=strtoint(edit1.Text);
    in_img := TGPImage.Create(fname);
    sclx:=out_width/in_img.GetWidth;
    if sclx < 1 then begin out_height :=round(in_img.GetHeight*sclx); out_img :=TGPBitmap.Create(out_width,out_height); g := TGPGraphics.Create(out_img); g.DrawImage(in_img, MakeRect(0, 0, out_width, out_height), 0, 0, in_img.GetWidth, in_img.GetHeight, UnitPixel); g.Destroy; in_img.Free; GetEncoderClsid('image/jpeg', encoderClsid); out_img.Save(fname, encoderClsid); out_img.free; end; except end; end; memo4.Clear; button4.Enabled:=true; end; я ее нашел на просторах инета. И слегка доделал, ибо была утечка памяти и случалась печалька. Есть вероятность что те типы потребуют дополнительные модули. Но думаю по типам переменных нагуглить сами модули уже не составит труда.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Спoнcopcкиe ссылки