powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TGA Криво сохраняет картинку;
43 сообщений из 43, показаны все 2 страниц
TGA Криво сохраняет картинку;
    #39650747
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет
Скачал GraphicEx.
Там был пример конверта с любого формата загруженного в Image, в TGA.
Но как мне вырезать кусок картинки, поместить его в Targa и сохранить как TGA !?
Пробую так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
  Target: TTargaGraphic;
{...}
          Target := TTargaGraphic.Create;
          Target.PixelFormat := pf24Bit;
          Target.Width := 256;
          Target.Height := 256;
          Target.Canvas.Draw(0, 0, Img1.Picture.Graphic);
           Target.SaveToFile('путь сохранения');
          Target.Free;



Ожидание:


Реальность:



Что делаю не так? Если после
Код: pascal
1.
Target.Canvas.Draw(0, 0, Img1.Picture.Graphic);

вывести содержимое Target.Canvas в Image1.Canvas то картинка такая, какая должна быть.
Почему сохраняется так криво?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650753
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neПривет
Почему сохраняется так криво? Вероятно потому, что кривая сохранялка. Вообще, конвертить через отрисовку - не лучшее решение, как в плане эффективности, так и надежности. Стоит поставить режим видеоадаптера меньше 24bpp и результат изменится.
Просто запусти готовый конвертор, вроде ImageMagic.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650770
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский Борис,
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
procedure TMainForm.TruevisionTarga1Click(Sender: TObject);

var
  Target: TTargaGraphic;

begin
  with SPD do
  begin
    Filter := FileFormatList.GetGraphicFilter([], fstBoth, [foCompact, foIncludeAll,
     foIncludeExtension],TTargaGraphic);

    if Execute then
    begin
      Target := TTargaGraphic.Create;
      try
        if Image1.Picture.Graphic is TBitmap then Target.Assign(Image1.Picture.Graphic)
                                             else
        begin
          Target.PixelFormat := pf24Bit;
          Target.Width := Image1.Picture.Width;
          Target.Height := Image1.Picture.Height;
          Target.Canvas.Draw(0, 0, Image1.Picture.Graphic);
        end;
        Target.SaveToFile(FileName);
      finally
        Target.Free;
      end;
    end;
  end;
end;



Сохраняет ровно, четко, как и должно.
Почему в моем случае получается крива картинка? Менял pf24bit на 16, картинка вырвиглаз)
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650773
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

А если копировать не через .Draw(), а через BitBlt() и сразу только нужный кусок?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650779
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpTech N9ne,

А если копировать не через .Draw(), а через BitBlt() и сразу только нужный кусок?
попробовал так:
Код: pascal
1.
BitBlt(Target.Canvas.Handle, 0, 0, 256, 256, img1.Canvas.Handle, 0, 0, SrcCopy);


компилится но выдает ошибку, типа онли с битмап надо.. как я понял..

перегнал img1 в bmp (Tbitmap)
Код: pascal
1.
BitBlt(Target.Canvas.Handle, 0, 0, 256, 256, bmp.Canvas.Handle, 0, 0, SrcCopy);


и того:
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650780
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
есть такая прекрасная библиотека, которая облегчит твои страдания
https://github.com/mike-lischke/GraphicEx
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650785
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecatorесть такая прекрасная библиотека, которая облегчит твои страдания
https://github.com/mike-lischke/GraphicEx
Вообще-то я скачал с оф сайта GraphicEx.
И там в архиве шёл исходник, пример конвертирования в ТГА.
По нему и делаю. Он та как раз и усложнил мне всё)
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650786
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9nedefecatorесть такая прекрасная библиотека, которая облегчит твои страдания
https://github.com/mike-lischke/GraphicEx
Вообще-то я скачал с оф сайта GraphicEx.
И там в архиве шёл исходник, пример конвертирования в ТГА.
По нему и делаю. Он та как раз и усложнил мне всё)

Мне нужно загрузить в Image1 картинку, любого формата, JPG, PNG, BMP ...
Разбить её на 12 равных частей, и эти части, сохранить в .tga
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650794
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,
Делай через промежуточные битмап-ы если с ними нет проблем.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650795
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neМне нужно загрузить в Image1 картинку, любого формата, JPG, PNG, BMP ...
Разбить её на 12 равных частей, и эти части, сохранить в .tga

Ну, раз тебе это нужно, так попробуй прочитать документацию и почувствовать разницу между
Draw() и CopyRect().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650798
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovTech N9neМне нужно загрузить в Image1 картинку, любого формата, JPG, PNG, BMP ...
Разбить её на 12 равных частей, и эти части, сохранить в .tga

Ну, раз тебе это нужно, так попробуй прочитать документацию и почувствовать разницу между
Draw() и CopyRect().

Дело не в этом, я пойду сейчас прочитаю, почувствую разницу и что дальше? А дальше будет то, что сохранения, в любом случае будут кривыми! Вырезается всё ровно и через Copyrect.
СОХРАНЯЕТСЯ КРИВО ДЯДЯ

Мне что бы приступить к делению на части, нужно проверить, будет ли оно вообще сохранять кусок.
На этом и тормознулся. Как догоню в чем дело, можно приступать к чтению Draw() и CopyRect().
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650799
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисTech N9ne,
Делай через промежуточные битмап-ы если с ними нет проблем.
Что значит промежуточные битмапы?
Грузить в tbitmap? и оттуда уже работать? Если ты это имел в виду, то я пытался.
Я же объясняю, я вывожу из Target картинку в Image, что бы убедится, что точно ровно отрезал , и картинка явно ровно вырезана. Но после savetofile, получаю обрубок, как будто картинка сдвигается в ходе сохранения.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39650919
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По мне так постановка задачи сомнительная, не думаю, что какой-то софт требует специально TGA и не сможет обработать BMP. Эти форматы только заголовками немного отличаются.

TGA формат вроде вообще примитивный, зачем брать какие-то "сохранялки", если можно легко и просто создать его из битмапа в фиксированном формате (24 бита)?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651114
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimonkaПо мне так постановка задачи сомнительная, не думаю, что какой-то софт требует специально TGA и не сможет обработать BMP. Эти форматы только заголовками немного отличаются.

TGA формат вроде вообще примитивный, зачем брать какие-то "сохранялки", если можно легко и просто создать его из битмапа в фиксированном формате (24 бита)?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651117
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто имеет GraphicEx попробуйте у себя вырезать часть картинки и сохранить в tga.
пожалуйста.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651118
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neМне что бы приступить к делению на части, нужно проверить, будет ли оно вообще сохранять
кусок.
На этом и тормознулся. Как догоню в чем дело, можно приступать к чтению Draw() и CopyRect().

Попробуй спеки почитать. Там вполне может быть неочевидное ограничение, например, на
размер картинки, кратный 8 пикселям или, как у битмапа, на размер строки, кратный 16-ти батам.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651167
527470
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПопробуй спеки почитать. Там вполне может быть неочевидное ограничение, например, на
размер картинки, кратный 8 пикселям или, как у битмапа, на размер строки, кратный 16-ти батам.

У самого Tga таких ограничений нет, только если у компонента. Вообще tga простой и почти без ограничений формат, не понимаю почему про него все забыли.

Tech N9ne
попробуй сохранять с сжатием или без, может в либе есть косяк с этим. Если посмотреть на "реальность" то у тебя явно какой-то хлам записан в начале буфера данных изображения, из-за чего все остальное едет, создается впечатление что там записана палитра, о которой нет ни слова в заголовке и которой собственно не должно быть.

А вообще можешь приложить оригинал получаемого файла?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651182
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
527470Dimitry SibiryakovПопробуй спеки почитать. Там вполне может быть неочевидное ограничение, например, на
размер картинки, кратный 8 пикселям или, как у битмапа, на размер строки, кратный 16-ти батам.

У самого Tga таких ограничений нет, только если у компонента. Вообще tga простой и почти без ограничений формат, не понимаю почему про него все забыли.

Tech N9ne
попробуй сохранять с сжатием или без, может в либе есть косяк с этим. Если посмотреть на "реальность" то у тебя явно какой-то хлам записан в начале буфера данных изображения, из-за чего все остальное едет, создается впечатление что там записана палитра, о которой нет ни слова в заголовке и которой собственно не должно быть.

А вообще можешь приложить оригинал получаемого файла?
картинка которую пытаюсь порезать
при попытки приложить файл, который сохраняется в TGA, мне пишет что размер привышен. он 2.17мб
при попытки загрузить на хостинг - недопустимый формат.
остаётся только скриншот сделать ) но смысл, если оригинал нужен)

А подскажите, как сохранять с сжатием?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651191
527470
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для того что бы понять что именно не так нужен выходной файл. Судя по исходникам на гите через SaveToFile сжатие всегда происходит, если сохранять через SaveToStream, то там есть параметр.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651193
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neМне нужно загрузить в Image1 картинку, любого формата, JPG, PNG, BMP ...
Разбить её на 12 равных частей, и эти части, сохранить в .tga
Нифига себе возраст у этой проблемы О_о
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651202
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpTech N9neМне нужно загрузить в Image1 картинку, любого формата, JPG, PNG, BMP ...
Разбить её на 12 равных частей, и эти части, сохранить в .tga
Нифига себе возраст у этой проблемы О_о
Ага, тоже гуглил, не нашёл ответа))
Вообще это программка будет менять фон в игре cs 1.6. Уверен, тоже самое хотел сделать человек с форума по ссылке.
Решил для себя написать, попробовать, и сталкнулся с проблемой) теперь уже дело принципа)
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651207
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
527470Для того что бы понять что именно не так нужен выходной файл. Судя по исходникам на гите через SaveToFile сжатие всегда происходит, если сохранять через SaveToStream, то там есть параметр.
в архиве выходной файл
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651252
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

У меня вот так всё работает
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
program tgarect;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  WinApi.Windows,
  System.SysUtils,
  System.Classes,
  Vcl.Graphics,
  Vcl.Imaging.jpeg,
  GraphicEx;

var
  SImg: TJPEGImage;
  Temp: TBitmap;
  TImg: TTargaGraphic;
  SRect: TRect;
  DRect: TRect;
begin
  try
    Temp := nil;
    TImg := nil;
    SImg := TJPEGImage.Create;
    try
      SImg.LoadFromFile('..\..\earth.jpg');
      Temp := TBitmap.Create;
      Temp.Assign(SImg);
      TImg := TTargaGraphic.Create;
      TImg.Height := 512;
      TImg.Width := 512;
      SRect.TopLeft := Point((SImg.Width - TImg.Width) div 2, (SImg.Height - TImg.Height) div 2);
      SRect.BottomRight := Point(SRect.Left + TImg.Width, SRect.Bottom + TImg.Height);
      DRect := Rect(0, 0, TImg.Width, TImg.Height);
      TImg.Canvas.CopyRect(DRect, Temp.Canvas, SRect);
      TImg.SaveToFile('..\..\small.tga');
    finally
      Temp.Free;
      TImg.Free;
      SImg.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651282
527470
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tech N9ne,

Как ты получил этот файл? В нём же полное изображение а не кусок, он нормально открывается.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651286
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpTech N9ne,

У меня вот так всё работает
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
program tgarect;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  WinApi.Windows,
  System.SysUtils,
  System.Classes,
  Vcl.Graphics,
  Vcl.Imaging.jpeg,
  GraphicEx;

var
  SImg: TJPEGImage;
  Temp: TBitmap;
  TImg: TTargaGraphic;
  SRect: TRect;
  DRect: TRect;
begin
  try
    Temp := nil;
    TImg := nil;
    SImg := TJPEGImage.Create;
    try
      SImg.LoadFromFile('..\..\earth.jpg');
      Temp := TBitmap.Create;
      Temp.Assign(SImg);
      TImg := TTargaGraphic.Create;
      TImg.Height := 512;
      TImg.Width := 512;
      SRect.TopLeft := Point((SImg.Width - TImg.Width) div 2, (SImg.Height - TImg.Height) div 2);
      SRect.BottomRight := Point(SRect.Left + TImg.Width, SRect.Bottom + TImg.Height);
      DRect := Rect(0, 0, TImg.Width, TImg.Height);
      TImg.Canvas.CopyRect(DRect, Temp.Canvas, SRect);
      TImg.SaveToFile('..\..\small.tga');
    finally
      Temp.Free;
      TImg.Free;
      SImg.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.


взял этот код, подставил свои пути в loadfromfile и savetofile - больше ничего не трогал!
эффект тот же) часть изображения сдвигается.
delphi 7
мистика
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651293
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neвзял этот код, подставил свои пути в loadfromfile и savetofile - больше ничего не трогал!
эффект тот же) часть изображения сдвигается.
delphi 7
мистика
Ну я тестировал на XE2, сейчас на 7ке попробую.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651296
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpНу я тестировал на XE2, сейчас на 7ке попробую.
На Delphi 7 у меня тоже нормально сохраняет.
Вопрос на засыпку: где вы брали GraphicEx?.. Я - вот здесь .
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651298
527470
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вообще у этой либы есть косяк с палитрой:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
//сначала записываем заголовок
      Stream.Write(Header, SizeOf(Header));

      if ColorMapType = 1 then
      begin
        with LogPalette do
        begin
          GetPaletteEntries(Palette, 0, 256, palPalEntry);
          for I := 0 to 255 do
          begin
            Stream.Write(palPalEntry[I].peBlue, 1);
            Stream.Write(palPalEntry[I].peGreen, 1);
            Stream.Write(palPalEntry[I].peRed, 1);
          end;
        end;
//а потом меняем его на правильные значения тут
        ColorMapSize := 256;
        ColorMapEntrySize := 24;
      end
      else
      begin
//и тут
        ColorMapSize := 0;
        ColorMapEntrySize := 0;
      end;
    end;



я не проверял под отладчиком, но выглядит как баг.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651300
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpalekcvpНу я тестировал на XE2, сейчас на 7ке попробую.
На Delphi 7 у меня тоже нормально сохраняет.
Вопрос на засыпку: где вы брали GraphicEx?.. Я - вот здесь .
качал тут:
Сейчас качаю с гитхаба. Попробую - отпишусь тут
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651301
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин редактировать сообщения нельзя? )
тут качал
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651321
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю, нужно указать папку в Library, на паку graphicex-master ?
пишу в юзес graphicex, компилю пустой проект, выдает ошибку:
[Fatal Error] GraphicCompression.pas(45): File not found: 'zLibEx.dcu'
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651325
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

среда, к сожалению, ничего не знает о том, где расположены твои скачанные библиотеки. поэтому стоит прописывать пути к ним. инсталляторы часто это делают сами.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651336
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonTech N9ne,

среда, к сожалению, ничего не знает о том, где расположены твои скачанные библиотеки. поэтому стоит прописывать пути к ним. инсталляторы часто это делают сами.
Так я и прописал путь к папке GraphicEx.
Environment options - library - add всё так же как и до этого делал.
указал все папки, даже подпапки.
В самой библе нет такого файла как zlibex. dcu
результат поиска в скачанном архиве:

именно DCU там нет
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651338
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Tech N9nemakhaonTech N9ne,

среда, к сожалению, ничего не знает о том, где расположены твои скачанные библиотеки. поэтому стоит прописывать пути к ним. инсталляторы часто это делают сами.
Так я и прописал путь к папке GraphicEx.
Environment options - library - add всё так же как и до этого делал.
указал все папки, даже подпапки.
В самой библе нет такого файла как zlibex. dcu
результат поиска в скачанном архиве:

именно DCU там нет
DCU появляется ПОСЛЕ компиляции PAS файла.
хоспаде.....
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651342
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чудом всё нашлось...
Теперь.. Беру код:
program tgarect;

{$APPTYPE CONSOLE}

{$R *.res}

uses
WinApi.Windows,
System.SysUtils,
System.Classes,
Vcl.Graphics,
Vcl.Imaging.jpeg,
GraphicEx;

var
SImg: TJPEGImage;
Temp: TBitmap;
TImg: TTargaGraphic;
SRect: TRect;
DRect: TRect;
begin
try
Temp := nil;
TImg := nil;
SImg := TJPEGImage.Create;
try
SImg.LoadFromFile('..\..\earth.jpg');
Temp := TBitmap.Create;
Temp.Assign(SImg);
TImg := TTargaGraphic.Create;
TImg.Height := 512;
TImg.Width := 512;
SRect.TopLeft := Point((SImg.Width - TImg.Width) div 2, (SImg.Height - TImg.Height) div 2);
SRect.BottomRight := Point(SRect.Left + TImg.Width, SRect.Bottom + TImg.Height);
DRect := Rect(0, 0, TImg.Width, TImg.Height);
TImg.Canvas.CopyRect(DRect, Temp.Canvas, SRect);
TImg.SaveToFile('..\..\small.tga');
finally
Temp.Free;
TImg.Free;
SImg.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.


Ни одна программа не открывает сохранившееся изображение.
и вес странный) 10 кб)
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651351
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9ne,

Надо прописать два пути: 1й к ...\GraphicEx, 2й - к ...\GraphicEx\3rd Party\DelphiZLib
Если у вас Delphi 7, то в моём примере в USES необходимо убрать пространства имён (Winapi. , System. - вот это вот всё).

Я у себя проверил: на дельфи 7 даже с вашей картинкой всё нормально работает, что-то вы делаете не так. Как вариант - где-то в путях выше GraphicEx лежат какие-то одноимённые юниты, которые конфликтуют (используются вместо нужных).
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651357
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не боитесь, можете проверить где-нибудь на виртуалке:
https://www.dropbox.com/s/a1qjvozjsg1in2w/tgarect.exe?dl=1

Преобразует файл earth.jpg в каталоге с .exe, сохраняет там же small.tga (вырезает кусок 512х512 из середины).
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651414
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переустановил винду))))))) давно уже пора)
установил delphi7
подключил библы graphicex
беру код который мне кидали в сообщениях
program tgarect;

{$APPTYPE CONSOLE}

{$R *.res}

uses
WinApi.Windows,
System.SysUtils,
System.Classes,
Vcl.Graphics,
Vcl.Imaging.jpeg,
GraphicEx;

var
SImg: TJPEGImage;
Temp: TBitmap;
TImg: TTargaGraphic;
SRect: TRect;
DRect: TRect;
begin
try
Temp := nil;
TImg := nil;
SImg := TJPEGImage.Create;
try
SImg.LoadFromFile('..\..\earth.jpg');
Temp := TBitmap.Create;
Temp.Assign(SImg);
TImg := TTargaGraphic.Create;
TImg.Height := 512;
TImg.Width := 512;
SRect.TopLeft := Point((SImg.Width - TImg.Width) div 2, (SImg.Height - TImg.Height) div 2);
SRect.BottomRight := Point(SRect.Left + TImg.Width, SRect.Bottom + TImg.Height);
DRect := Rect(0, 0, TImg.Width, TImg.Height);
TImg.Canvas.CopyRect(DRect, Temp.Canvas, SRect);
TImg.SaveToFile('..\..\small.tga');
finally
Temp.Free;
TImg.Free;
SImg.Free;
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

в uses подключил graphicex, jpeg;
Не выдаёт никаких ошибок, всё компилится и запускается без проблем!
Но сохраняет файл, который посмотреть нельзя. Что-то с ним не то кароч...

Как так ребят? У меня мозг уже кипит!) всё делаю же правильно епть_) что не так то ???
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651416
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Боже, теперь даже исходник который шёл с библой "Convert" сохраняет так, что не могу посмотреть.
Picasa пишет "недопустимо"
убейте меня кто нибудь
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651472
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окей, ладно.......... А есть альтернатива GraphicEx ?
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651587
Фотография Dimonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neПереустановил винду))))))) давно уже пора)
установил delphi7
подключил библы graphicex
Ну если подходить так глобально, то можно заодно пройти какие-нибудь релевантные курсы, изучить пару-другую книг по Дельфи, ООП и по программированию вообще. Как говорится - давно уже пора)
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651612
DesWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tech N9ne,
Глянул я этот формат, за два дня можно самому реализовать было. Тебе же не надо поддерживать "зоопарк" вариантов формата, а можно сохранять во вполне конкретный вариант, который тебя устроит.
...
Рейтинг: 0 / 0
TGA Криво сохраняет картинку;
    #39651740
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DesWind,

А антивирус какой стоит?
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TGA Криво сохраняет картинку;
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]