使用C#和ImageMagick在上传时将EPS转换为JPG

时间:2011-05-17 12:32:32

标签: c# asp.net image-processing imagemagick

我刚刚遇到过需要在上传时将EPS文件转换为JPG文件的情况。

我最喜欢做的是,上传EPS文件时;我想保留原始EPS文件并将其保存在文件夹下的后台,并将EPS图像转换为JPG并将其保存在另一个文件夹中。

这是否可以通过C#实现?如果是这样,有人可以指导我朝正确的方向发展吗?

我使用过ImageMagick和GhostScript,从命令行我可以将EPS转换为JPG但不知道如何将其嵌入到C#应用程序中并在上传时将EPS转换为JPG。

任何帮助或任何演示相同的演示都将是一个很大的帮助。

谢谢, Zulfi

3 个答案:

答案 0 :(得分:1)

在研究了可用的解决方案一段时间之后,我遇到了似乎运行良好的this utility。这是200美元/服务器。 VeryDoc的实用程序不依赖于任何第三方库(与其他解决方案不同),它提供了多种格式之间的转换。可用的命令行选项:

C:\>ps2img.exe
-------------------------------------------------------
Description:
Convert PS (Postscript) and EPS to TIF, TIFF, JPG, GIF, PNG, BMP, WMF, EMF, PCX, TGA, etc. formats
Usage: ps2img [options] <-i PS File> [-o Output]
-i [input PS]   : Input PS filename
-o [output file]: Output TIFF filename
-g              : Convert to 8-bit grayscale image file, this option is only available while bitcount equal 8 (-b 8)
-m              : Set output to multi-page TIFF file, the default is output to single page TIFF files
-r [resolution] : Set resolution in generated image files
-r 300          : Set horizontal and vertical resolution to 300 DPI
-r 200x300      : Set horizontal and vertical resolution to 200x300 DPI
-r 204x98       : Set horizontal and vertical resolution to 204x98 DPI
-f [first Page] : First page to convert
-l [last Page]  : Last page to convert
-c [compress]   : Set compression method in generated image files (for tif only)
    -c none     : Create TIFF file without compression
    -c lzw      : Compress TIFF using LZW arithmetic
    -c jpeg     : Compress TIFF using JPEG arithmetic
    -c packbits : Compress TIFF using packbits arithmetic
    -c g3       : Compress TIFF using CCITT G3 arithmetic
    -c g4       : Compress TIFF using CCITT G4 arithmetic
    -c ClassF   : Compress TIFF into Fax compatible ClassF 204x98 format
    -c ClassF196: Compress TIFF into Fax compatible ClassF 204x196 format
-q [quality]    : Set quality in created image files (for jpeg image only)
-b [bit count]  : Set bit count in generated image files
-?              : Help
-------------------------------------------------------
Example:
    ps2img -i C:\input.ps -o C:\output.tif
    ps2img -i C:\input.eps -o C:\output.tif
    ps2img -m -i C:\input.ps -o C:\output.tif
    ps2img -c lzw -i C:\input.ps -o C:\output.tif
    ps2img -q 80 -i C:\input.ps -o C:\output.jpg
    ps2img -b 4 -i C:\input.ps -o C:\output.tif
    ps2img -i C:\input.ps -o C:\output.tif -b 1 -c ClassF -r 204x98 -m
    ps2img -f 1 -l 9 C:\input.ps -o C:\output.jpg
    ps2img -i C:\*.ps -o C:\*.pcx

另一种选择,ImageMagick(免费)+ GhostScript价格为reportedly,价格为32,000美元+ /年+ $ 5,000安装费。

答案 1 :(得分:1)

您可以考虑自己解析EPS文件。

您可以在网上找到各种文件格式信息,例如wotsit.org(自90年代以来就已存在,当时人们仍在从头开始编写他们需要的东西。)

这样做的好处是不需要将外部工件嵌入到您的解决方案中,也不会产生许可成本。它显然具有个人时间投资研发的缺点。之后,也许您可​​以与没有归属,版权保护或许可成本的其他人共享您的代码/库。

祝你好运!

答案 2 :(得分:-1)

使用ImageMagickNET.dll,您可以将.eps,.ai,.psd,.tga文件转换为.jpg格式。 c#代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using SimplePsd;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;
using System.Configuration;
using System.Media;
using System.DirectoryServices;
using System.Diagnostics;
namespace Master_Graphics
{
    public partial class Form1 : Form
    { 

        private SimplePsd.CPSD psd = new SimplePsd.CPSD();
        Process ffmpeg;
        string video;
        string thumb;
        public Form1()
        {
            InitializeComponent();
        }
 private void button4_Click(object sender, EventArgs e)
        {
ffmpeg = new Process();
                ffmpeg.StartInfo.Arguments = "convert \"" + listBox1.SelectedItem.ToString() + "\" -background white -flatten -density 300 -colors 512 -antialias  -normalize -units PixelsPerInch -quality 100 -colorspace RGB -resize 3425x3425  \"D:\\GRAPHICS SEARCH ENGINE\\GRAPHICS IMAGES\\EPS\\" + final + ".jpg\"";
                ffmpeg.StartInfo.FileName = ("C:\\Program Files (x86)\\ImageMagick-6.5.3-Q16\\convert.exe");
                ffmpeg.Start();
}