C # Как конвертировать PNG / JPG в 32-битный TGA? - PullRequest
0 голосов
/ 06 октября 2018
        private void ConvertButton_Click(object sender, EventArgs e)
        {
          Bitmap original = new Bitmap(@"filepath.cover.png");
          Bitmap clone = new Bitmap(original.Width, original.Height, PixelFormat.Format32bppPArgb);
          using (Graphics conv = Graphics.FromImage(clone))
          {
            conv.DrawImage(original, new Rectangle(0, 0, clone.Width, clone.Height));
          }
        }

Привет всем, мне нужна помощь.

Я пытаюсь преобразовать файлы PNG или JPEG в 32-битные файлы TGA и сохранить их. Я все еще новичок в программировании и не смог найти здесь ответ.Я нашел здесь только этот фрагмент кода и попытался заставить его работать, я пробовал много версий, чтобы получить выходной файл, но ничего не получалось, иногда я получал пустой файл, иногда поврежденный

спасибовсе, кто мне помогает.

Редактировать: Прежде всего, спасибо, я попробовал ваш код, и он дает мне пустой файл.Я просто пытаюсь это:

private void TgaConvert_Click(object sender, EventArgs e)
{
    TGA original = new TGA(@"file.path.cover.png");
    TGA clone = new TGA(original.Width, original.Height, TgaPixelDepth.Bpp32,
    TgaImageType.Uncompressed_TrueColor);

    using (??? conv = ???(clone))
    {
        conv.???(original, new ???(0, 0, clone.Width, clone.Height));
        clone.Save(@"file.path.cover.tga");
    }
}

в местах с "???"Я не могу получить дальше

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я сделал это:

using TGASharpLib;
....
TGA T;
private void ConvertButton_Click(object sender, EventArgs e)
    {
        using (Bitmap original = new Bitmap("file.path.jpg"))
        using (Bitmap clone = new Bitmap(original))
        using (Bitmap newbmp = clone.Clone(new Rectangle(0, 0, clone.Width, clone.Height), PixelFormat.Format32bppArgb))
        T = (TGA)newbmp;
        T.Save("file.path.cover.tga");
    }
0 голосов
/ 07 октября 2018

К сожалению, поддержка записи TGA не включена в .net framefork.Но есть и другие доступные библиотеки с открытым исходным кодом.Посмотрите на TGASharpLib от Зеленского Александра (https://github.com/ALEXGREENALEX/TGASharpLib).

Если применить его пример к вашему коду, то это результат:

using TGASharpLib;
...

private void ConvertButton_Click(object sender, EventArgs e)
{
    var tga = new TGA(@"filepath.cover.png");
    tga.Save(@"filepath.cover.tga");        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...