繁体   English   中英

c# 如何将PNG/JPG 转为TGA 32bit?

[英]c# how to convert PNG / JPG to TGA 32bit?

        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 文件转换为 TGA 32 位文件并保存它们,我还是编程新手,在这里找不到答案。 我在这里只找到这段代码片段并试图让他运行,我尝试了很多版本来获取 output 文件,但没有任何效果,有时我得到一个空白文件,有时是一个损坏的文件

感谢所有帮助我的人。

编辑:首先,谢谢你,我试过你的代码,它给了我一个空文件。 我只是在尝试这个:

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");
    }
}

在带有“???”的地方我不能再进一步了

不幸的是,.net framefork 中不包含对 TGA 的写入支持。 但是还有其他可用的开源库。 看看 Zelenskyi Alexandr 的 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");        
}

我做的:

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");
    }

我知道我有点晚了,但接受的答案不使用TGASharpLib自己的功能。 使用它们会产生更清晰的代码:

using TGASharpLib;

private void ConvertButton_Click(object sender, EventArgs e)
{
    var myTGA = TGA.FromFile("filepath.cover.png");
    myTGA.Save("output.tga");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM