2009-12-05 19 views
9

Doğru bir CMYK görüntüsünü RMagick ile RGB'ye dönüştürme

 if @image.colorspace == Magick::CMYKColorspace 
     # @image.colorspace #=> CMYKColorspace=12 
     @image.colorspace = Magick::RGBColorspace 
     @image = @image.negate 
    end 

xzxx xzxx xzxx xzxx xzxx xzxx

xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx xzxx

Resmi reddetmem gerekmesi çok kötü bir koku bırakıyor.

Belgeler, color_profiles kullanarak bahseder, ancak bunun ötesinde fazla bir şey bulamıyorum.

Şimdi

'i deneyiyorum
@image = @image.quantize(16777216, Magick::RGBColorspace) 

Ve daha iyi renkler var ama yine de kapalı.

+0

Ruby ve Rmagick hakkında bilmiyorum, ancak ImageMagick'in kendisi en azından teoride, renk profillerini işleyebilir. (CMYK, hatırladığım kadarıyla her zaman IM ile Ağrı oldu). Bir profil uygulamakta sorun mu yaşıyorsunuz, yoksa bir profil kullanmıyor musunuz? Varsa hangi malzeme profili var? –

+0

Gelen dosyaların, bu durumda, bir profil var. Biraz daha araştıracağım. Renk profilleri ile kayboldum (onları nereden indirebilirim? ICC sitesi çok fazla yardım etmedi). Teşekkürler. –

+0

Buradan boş alanın ... Aşağıya bakın. –

cevap

11

Teşekkürler Pekka, bana cevabın cevabını verdiniz (+1).

ImageMagick'in Little Color Management System (LCMS) yüklü derlenmiş olması gerekir. Bir yükleyici veya paket kullanılmışsa bu durum zaten geçerli olabilir. Ama kaynaktan derliyordum. LCMS'yi kaynaktan yüklemek ve ImageMagick'i yeniden oluşturmak kadar kolaydı (./configure; make; make install).

convert FILENAME -profile /PATH_TO_PROFILE/sRGB.icm OUT.jpg

Yani RMagick içinde aşağıda kullanın:: ImageMagick'in yılında

aşağıda doğru rengi çoğaltmak iyi çalışıyor ben Kimler komut satırı çözüm güzelce çalıştı bulundu

if @image.colorspace == Magick::CMYKColorspace 
    # Adjust the path as necessary 
    @image.color_profile ="/usr/local/share/ImageMagick-6.5.4/config/sRGB.icm" 
end 

@image.write("out.jpg") { self.quality = 85 } 
+0

ImageMagick 6.8.0 ile renk profillerinin nerede bulunacağı veya nasıl kurulacağı hakkında bir fikriniz var mı? Homebrew kullanarak yükledim ve OS X'imde * .icm dosyalarını bulamıyor. Aksi halde çok yardımcı bir cevap için teşekkürler! – Javier

+2

Mac OS X'te, imagemagick'i lcms desteğiyle derlemek için 'imagemagick --with-little-cms' komutunu kullanabilirsiniz. Tüm plattformlarda şunları yapabilirsiniz: convert -list configure Düzgün yüklenmiş –

2

Gelen dosyalar, bu durumda 'un bir profiline sahiptir. biraz daha araştırıyorum. Ben renk profillerle kayboldu

Kafanız karıştı tek değildir (? I onlara indiririm nerede gibi ICC sitesi pek yardımcı olmadı); Ben de öyleydim. ImageMagick sitesinde görüşülecek olan tartışmalar var: Here Geriye dönüldüğüm zaman, kullanılan profil tanımlanabildiğinde (örn. Bir monitör profili) veya dosyaya gömüldüğünde profillerle düzgün şekilde çalışmak mümkündür. Photoshop'ta en az TIFF ve JPG için yapılabilir, bence). Kontrol edin örn. bu: Here. İyi şanslar.

+0

Yaklaşıyor sanırım. Image Magick'in 'with-lcms = yes' ve LCMS kütüphanesi kurulu olarak derlenmesi gerekiyor. Bir anım olduğunda bunu deneyeceğim. –

2

, ama RMagick çözümü benim için çalışmadı.

Bunu RMagick'te çalışmak için, bunun yerine, doc'lara göre bir kaynak ve hedef profili belirtmenize izin veren Magick :: Image # add_format yöntemini kullanmak zorunda kaldım. Bu şuna benzer:

if img.colorspace == Magick::CMYKColorspace 
    img.add_profile(RGB_COLOR_PROFILE) 
end 
1

RE: LCMS CentOS 5.5 üzerinde indirip kaynağından son LCMS'yi inşa etmeyi unutmayın (genel yum install). Aksi halde IM, yapım aşamasında LCMS'yi bulamayacak ve IM gibi delege lib'lerine neden LCMS'nin dahil edilmediğini merak ederek, başınızı kaşıyacaksınız.

4

Çok uzun bir süre bir CMYK EPS'den RMagick ve Rails kullanarak RGB PNG'ye gitmeye çalıştım.Umarım bu kişiye yararlı olacaktır:

def convert_image_from_cmyk_to_rgb(image) 
    #puts image.alpha? 
    if image.colorspace == Magick::CMYKColorspace 
    image.strip! 
    image.add_profile("#{Rails.root}/lib/USWebCoatedSWOP.icc") 
    image.colorspace == Magick::SRGBColorspace 
    image.add_profile("#{Rails.root}/lib/sRGB.icc") 
    end 
    image 
end 

ATBM'nin dosyaları http://www.adobe.com/support/downloads/iccprofiles/iccprofiles_win.html

sadece ben süss edemedik şey şeffaflığı muhafaza etmek nasıl en Adobe doğrudan indirebilirsiniz. Kullanmak istediğim EPS, beyaza dönüşen saydam bir arka plana sahip. Maalesef, beyaz olarak tutmak istediğim resimde beyazım var gibi image.transparent("white") gibi bir şey yapamıyorum.

Yukarıdaki kodda puts image.alpha? unvanını kaldırırsam false değerini döndürür. benim yapmaya çalışıyorum RMagick güncel sürümüyle mümkün olup olmadığını şeffaflık ile CMYK EPSS'ye ithal desteklenmiyorsa, merak etmeye başlıyorum olarak

herkes biliyor mu.

Teşekkürler!

+0

DELEGATES satırında lcms belirtilmelidir. Benim tavsiyem yeni bir soruda şeffaflık sorununu sormak olacaktır. –

+0

Teşekkürler Mark. Şimdilik http://stackoverflow.com/questions/6833496/rmagick-convert-cmyk-eps-to-rgb-png-maintaining-transparent-background –

+0

adresinde bunu yaptığınızda soruyu yanıtlamak için bunu düzenleyin. Bu soruya bir cevap –

İlgili konular