【问题标题】:Convert JPG with CMYK color space to RGB in .NET在 .NET 中将具有 CMYK 颜色空间的 JPG 转换为 RGB
【发布时间】:2014-05-31 13:11:46
【问题描述】:

嗯,我认为标题主要是这样说的。我想上传一张可能有多种格式的图片。一般来说,我想按原样保存它。但如果是带有CMYK色彩空间的JPG,我想在保存时将色彩空间转换为RGB。在 VB.NET 中是否有一种简单的方法可以做到这一点? (或者很难?)

【问题讨论】:

  • 您确实意识到重新保存 JPG 会降低质量。我假设您对 RGB 有特殊需求?
  • 你见过onverting CMYK Jpegs to RBG format??看来它可以满足您的需求!!!
  • @huMptyduMpty 我只是在挖掘那个链接:)
  • 我必须假设这些答案会很有帮助(尽管它要求相反)-stackoverflow.com/questions/5237104/…
  • @Dreamwalker 当然。但我的客户沉迷于 IE8,而 IE8 无法显示 CMYK JPG——你只会得到 Red X of Death。因此,降级的图像总比没有图像要好。

标签: .net vb.net image colors


【解决方案1】:

这是一个简单的递归 CMYK 到 RGB JPEG 转换器:

<%@ OutputCache Duration="600" VaryByParam="*" %>
<%@ Page Debug="false" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.IO" %>

<script language="VB" runat="server">

' CMYK to RGB image converter v1.0

Dim MyFolder as String = "PHOTO"

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    response.write ("<!DOCTYPE html><HTML><HEAD><TITLE>CMYK to RGB converter</TITLE><STYLE>HTML {margin:0px}BODY {font-family:Arial,Helvetica,SansSerif;margin:10px}</STYLE></HEAD><BODY><H1>CMYK to RGB converter</H1><H3>v1.0 by TFI</H3><BR>Image folder: <b>"+MyFolder+"</b><BR><BR>")
    Dim dir As String = Server.MapPath(".")
    Dim folders() As String = Directory.GetDirectories(dir)     
    for each folder as String in folders        
        if mid(folder,InStrRev(folder,"\")+1)=MyFolder then
            Dim files() As String = Directory.GetFiles(folder,"*.jpg",SearchOption.AllDirectories)
            if ubound(files)>=0 then
                for each file as String in files
                    Response.write ("Converting "+file)
                    Convert(file)
                    Response.Flush()
                next
            else
                response.write ("No images found.")
            end if
        end if  
    Next
    response.write ("</BODY></HTML>")
End Sub 

Sub Convert(imageName as String)
    Dim imgFullSizeTemp As System.Drawing.Image
    imgFullSizeTemp = System.Drawing.Image.FromFile(imageName)      
    If imgFullSizeTemp Is Nothing Then Response.End()   
    Dim imgFullSize as new Bitmap(imgFullSizeTemp.Width, imgFullSizeTemp.Height, PixelFormat.Format24bppRgb)
    Dim g As Graphics = Graphics.FromImage(imgFullSize)         
    g.DrawImage(imgFullSizeTemp, 0, 0, imgFullSizeTemp.Width, imgFullSizeTemp.Height)   
    g.Dispose()
    imgFullSizeTemp.Dispose()
    response.write (" >>> Converted!<BR><BR>")
    Dim clone as new Bitmap(imgFullSize)
    clone.Save(imageName, ImageFormat.Jpeg)
End Sub

</script>

【讨论】:

    猜你喜欢
    • 2020-05-04
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多