繁体   English   中英

如何使用c#和asp.net将多个透明PNG定位到JPG上?

[英]How could I position multiple transparent PNGs onto a JPG using c# and asp.net?

我想编写一个允许网络用户上传jpg并将透明png放置在该上传图像顶部的应用程序。 层数,层的位置以及实际的图像文件信息将使用javascript和CSS进行收集和处理。

拥有透明png的图像文件和xyz坐标后,如何从这些图像创建单个jpg? 你们有一个很好的起点,可以去研究吗?

编辑

嘿,我得到的前两个答案似乎很有效。 使用System.Drawing.Graphics和使用System.Drawing.Image什么区别?

是一篇文章,作者在其中添加了水印图像到现有图像。

该操作的核心是:

 System.Drawing.Graphics myGraphic = null;
 Image imgB;
 imgB = Image.FromFile(ImageBack);
 Image imgF;
 imgF = Image.FromFile(ImageFore);
 Image m;
 m = Image.FromFile(ImageBack);
 ...
 myGraphic = System.Drawing.Graphics.FromImage(m);
 myGraphic.DrawImageUnscaled(imgB,0,0);
 myGraphic.DrawImageUnscaled(imgF,0,0);
 myGraphic.Save();

这是我使用的一些代码(经过修改以显示原理):

private void ProcessPhoto()
        {


            System.Drawing.Image imgThumb = System.Drawing.Image.FromFile("some.jpg");

            // 43w, 35h = offset in frame

            System.Drawing.Image imgFrame = System.Drawing.Image.FromFile("transparent_something.png");

            Bitmap bmImage = new Bitmap(imgThumb);
            bmImage.SetResolution(72, 72);
            Graphics gFrame = Graphics.FromImage(imgFrame);
            gFrame.DrawImage(bmImage, new Point(38, 44)); // offset point of where you want to draw

            gFrame.Dispose();

            SavePhoto(imgFrame, "dest.png");

            imgFrame.Dispose();           
            imgThumb.Dispose();

        }

        private void SavePhoto(System.Drawing.Image img, string fileName)
        {
            string ext = Path.GetExtension(fileName);
            fileName = fileName.Replace(ext, ".png");            

            img.Save(fileName, GetImageEncoder("PNG"), null);
        }

编辑: 在这里阅读有关Graphics类的所有信息

暂无
暂无

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

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