代码之家  ›  专栏  ›  技术社区  ›  baptiste

有没有软件可以批量转换不同旋转角度的图像[[关闭]

  •  1
  • baptiste  · 技术社区  · 16 年前

    我在网上搜索了一个软件,可以批量转换源文件中不同旋转角度的图像,但搜索失败。我要找的东西存在吗?什么是可怕的是一个应用程序,我们浏览的源图像在PNG和目标目录,当按下一个按钮,程序创建每一个 "source-" + angle + ".png"

    编辑

    为了更清楚,我想在asp.net web应用程序的google map中放置定向标记。由于googlemapapi不允许设置我们想要显示图像的角度,我会将带有链接的标签的src设置为想要的角度。类似的东西也能找到 there 0 degree , 180 degree 290 degree ).

    所以我有我的基本png文件20px乘20px,但我宁愿不创建360图像这将是一个痛苦的,因为我现在有6种类型的图像和计数。所以我想找一点软糖来帮我实现这个目标。

    3 回复  |  直到 16 年前
        1
  •  6
  •   kikito    16 年前

    编辑:父级没有正确地暴露问题。一开始听起来像是3D的东西。

    对于旋转图像,可以使用 ImageMagick

    这是一个控制台程序,但它可以很容易地用来旋转图像。这是:

    convert image.png -rotate 45 image-45.png
    

    你可以制作一个bat或sh文件来自动化这个过程(这样你就有了一个合适的名字和在一个循环中生成的360个图像)。但是,脚本是完全不同的,这取决于您所处的平台。

        2
  •  0
  •   Beska    16 年前

    实际上,你可以在Photoshop中创建一个简短的例程来实现这一点。Photoshop可以让你轻松地旋转任意角度。您可以将此保存为一个操作,然后(假设photoshop在最近几个版本中没有太大的变化)将该操作保存为可在图像上运行的可执行文件。

    要考虑的是旋转图像、保存图像、旋转修改图像等,你可能会遇到越来越多的图片退化。理想情况下,你应该有你的所有旋转基于你的原始图像。这可能会使photoshop解决方案变得更加困难…不确定是否有简单的方法将参数(角度,在您的情况下)放入保存的例程中。

    最后,你确定你需要360张图片吗?我怀疑你可能会得到36张图片,只要给用户最接近的一张,在这个图片大小(你说你的输入图片是20x20),就可以了。

        3
  •  0
  •   SLaks    16 年前

    将以下代码粘贴到 LINQPad :

    using(var sourceImage = Image.FromFile(@"C:\Path\To\Image")) {
        for(int angle = 0; angle < 360; angle += 10) {
            using(var newImage = new Bitmap(sourceImage.Width, sourceImage.Height)) 
            using(var g = Graphics.FromImage(newImage)) { 
                g.TranslateTransform(sourceImage.Width / 2, sourceImage.Height / 2);
                g.RotateTransform(angle);
                g.DrawImage(sourceImage, -sourceImage.Width / 2, -sourceImage.Height / 2);
    
                newImage.Save(@"C:\Whatever\Rotated Images\" + angle + ".png");
            }
        }
    }
    
    推荐文章