繁体   English   中英

如何获得图像中的图像?

[英]How to get image in image?

只是不知道如何做到这一点:

我们有一张图像,并且我们知道这张图像中一张卡的WIDTHHEIGHT 我想在这张图片中显示一张图片。 下一个常数是我们有多少张牌,所以CNT_CARDS = 52 我不想创建每张卡片-仅显示该卡片。 我正在使用Winforms(C#)。

伪码

加载图像。

对于每张卡均可申请:

int offsetTop = row * HEIGHT;
int offsetLeft = column * WIDTH;
imageInImage.Location = new Point(offsetLeft, offsetTop);
imageInImage.Size = new Size(WIDTH, HEIGHT);

例如,如果我们想获得钻石女王:

int offsetTop = 2 * HEIGHT;
int offsetLeft = 11 * WIDTH;

扑克形象

通过使用Graphics.DrawImage()为单个卡创建一个位图。 样板示例实现可能如下所示:

    static Bitmap GetCardImage(Bitmap cards, int cardnum) {
        int width = cards.Width / 13;
        int height = cards.Height / 4;
        int left = width * (cardnum % 13);
        int top = height * (cardnum % 4);
        var bmp = new Bitmap(width, height,
            System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
        using (var gr = Graphics.FromImage(bmp)) {
            gr.DrawImage(cards,
                new Rectangle(0, 0, width, height),
                new Rectangle(left, top, width, height),
                GraphicsUnit.Pixel);
        }
        return bmp;
    }

您可以通过创建位图数组来进一步扩展此位图,以便在需要绘制位图时可以随时使用它们。 您会在启动屏幕上执行的操作。 假设您将带有卡面的图像添加为名为CardFaces的资源:

    static Bitmap[] CreateDeckImages() {
        var deck = new Bitmap[52];
        using (var images = Properties.Resources.CardFaces) {
            for (int cardnum = 0; cardnum < deck.Length; ++cardnum) {
                deck[cardnum] = GetCardImage(images, cardnum);
            }
        }
        return deck;
    }

未经测试,应该接近。

这应该是一个好的开始

        var bmp = new Bitmap(225, 315);
        var OriBmp = new Bitmap(@"c:\gnv4Q.jpg");
        var g = Graphics.FromImage(bmp);

        g.DrawImage(OriBmp,0,0,new Rectangle(225,315,225,315),GraphicsUnit.Pixel);

        bmp.Save(@"c:\test.png");

另一种选择是将图像分成一组图像,每张卡一个图像。

ImageSplitter ,是一个网站,当前拥有一个在线图像拆分工具,可用于将OP的图像高效地拆分为一组图像,每张卡一个图像。

请注意,由于OP的图像为2925 x 1260像素,并且卡片跨图像中的​​4行x 13列,因此结果将是通过使用讨论中的在线图像分割工具。

在讨论中的在线图像拆分工具网站上,您当前可以在主页上找到上传图像的选项。 您可能会发现:
1.点击显示“点击此处上传图片”的位置
2.点击“上传图片”
3.上载图像后,在下一个屏幕上,选择“分割图像”工具
4.然后输入当前在工具上找到的行数和列数
-对于此图像,在“行”中输入“ 4”,在列中输入“ 13”
5.接下来,单击工具上当前找到的“分割图像”

通过执行上面的步骤1到5,将在压缩文件中下载一组图像,即zip文件中包含的每个卡的一个图像,该浏览器的下载文件夹用于联机图像拆分工具。

链接到在线图像拆分工具的视觉指南

暂无
暂无

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

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