Görüntüdeki alfa kanalını kaldır


106

İOS için bir uygulama simgem var ancak Apple, resimde alfa olmasına izin vermiyor. Bu alfa kanalı nasıl kaldırılır? Yanımda sadece png resmi var, arkadaşım resmi benim için yaptığı için kaynak dosyam yok.


5
PNG'yi bir resim düzenleyicide açın ve alfa kanalı devre dışı bırakılarak yeniden kaydedin.
Alexander O'Mara

1
Kabul edilen yanıt, görüntü verilerini kaybeder ve fazladan gereksiz adımlara sahiptir. Bunun yerine aşağıdaki çözüme bakın: stackoverflow.com/a/38256612/5764320
Mycah

Ayrıca, resim verilerini kaybetmeden resimlerinizi sürükleyip bırakabileceğiniz ve alfa kanalını kaldırabileceğiniz küçük bir araç da yaptım: removealphachannel.com
Ali Nasserzadeh

Yanıtlar:


51

Başka bir görüntü düzenleyiciniz olmadığını varsayarsak, onu Mac'inizde Önizleme'de açabilir ve farklı bir formatta yeniden kaydetmek için Dışa Aktar seçeneğini kullanabilirsiniz - alfa kanalından kurtulmanızı sağlamak için, en iyisi dışa aktarmaktır. JPG'ye (en iyi kalite), ardından onu açın ve tekrar PNG olarak dışa aktarın.

Bunu söyledikten sonra, gerçek bir şeffaflık olmadığı sürece muhtemelen şeffaf bir kanal içeren bir simge göndermekte sorun yaşamadığından şüpheleniyorum.


10
Bu, küçük bir miktar kalite kaybına ve ayrıca PNG formatı bir JPG dosyası oluştururken elde ettiğiniz yapıları sıkıştırmak için uygun olmadığından daha büyük bir PNG dosyasına neden olacaktır. Ayrıca Apple, gerçek şeffaflık olmasa bile PNG görüntülerini alfa kanallarıyla reddediyor.
philwilks

MacOS Sierra'nın eski sürümünü denedim ve işe yaradı.
Bhaumik Desai

12
Aslında PNG'ye dışa aktarırken "Alfa" onay kutusunun işaretini kaldırabilirsiniz. Önce JPG'ye aktarmaya gerek yok.
Petr Peller

Görüntü kanallarını 4'ten 3'e düşürmek için görüntü verileri üzerinde işlem nasıl yapılır?
voldikss

5
Şeffaflık kanalına sahip herhangi bir PNG, resimde şeffaflık görünse de görünmese de kabul edilmeyecektir.
gbarnett

249

JPG'ye ve ardından PNG'ye geri aktarmak için kabul edilen yanıt önerilmez.

  • Süreçte fazladan bir adımdır (2 dışa aktarma)
  • JPG kayıplıdır, bu nedenle bazı görüntü verilerini kaybedersiniz

İşte bunu fazladan dışa aktarmadan veya (kayıplı) JPG'ye kaydetmeden yapmanın süper hızlı ve kolay bir yolu:

Önizleme uygulamasını kullanarak (Mac):

  1. Resmi
  2. Çoğaltmak için Command-Shift-S (bir kopya oluşturur)
  3. Kaydedilecek Komut-S
  4. "Alfa" onay kutusunun seçimini kaldırın
  5. Dosya adından "kopyayı" sil (boşluk dahil)
    • Bu, orijinalinizin üzerine yazacak, eğer orijinali saklamak istiyorsanız, isminde "kopya" bırakın
  6. Kayıt etmek
  7. Orijinalin üzerine yazmak istediğinizi onaylamak için 'Değiştir'i tıklayın
    • Yalnızca orijinalinizin üzerine yazıyorsanız gereklidir alfa kanalını kaldır

2
^ bu daha iyi bir cevap, IMHO. JPG, alfa kanallarını desteklemez ve bu, bir LOSSLESS format kullanmanıza ve alfa kanalıyla başa çıkmanıza (bundan kaçınmak yerine) izin verir.
Cody-PHP-jQuery

4
İTunes Store Ekibinin bu hatayı (Alfa kanalı) önceki sürümlerde doğru bulduklarında neden saat uygulaması simgelerinde gösterdiğini anlamıyorum. Kayıp zaman! Teşekkürler Apple Inc!
Markus

Kayıpsız çözüm için çok teşekkürler!
Shchvova

10
MacOS High Sierra ile Önizleme, onay kutusu işaretli olmasa bile PNG'leri her zaman bir alfa kanalı İLE kaydediyor gibi görünüyor. Kaydedilen dosyayı açarsam, bilgi kutusunda her zaman "Alfa: 1 Var" yazar. Sips aracı da bana söylüyor hasAlpha: yes. Ayrıca, iTunes Store istenmeyen alfa kanalından şikayetçi ("İşlem Başarısız - App Store simgesi ... şeffaf olamaz veya alfa kanalı içeremez").
Stefan

2
@Psychomentally tarafından belirtildiği gibi, ImageMagick nihayet benim için çalıştı: convert in.png -alpha off out.png. Yeniden. Önizleme: Dışa aktarma iletişim kutusunda "alfa" nın açılması / kapatılması tahmin edilen dosya boyutunu değiştirir, ancak kaydetme, dosyayı her zaman alfa bilgileriyle (ve karşılık gelen boyutla) yazar.
Stefan

60

tüm alfa kanallarını dizinden kaldırmanız gerekiyorsa, bu komutu kullanın:

for i in `ls *.png`; do convert $i -background black -alpha remove -alpha off $i; done

Mac OS Mojave'niz varsa ve "dönüştürme komutu bulunamadıysa"

brew install imagemagick

Homebrew'i yüklemek için

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

1
bu, 24bit yerine 8bit çıktı görüntüsü verir
Stepan Yakovenko

2
Eğer değiştirirseniz -alpha remove -alpha off $i;için -alpha remove -alpha off png24:$i; bunun çıktısı bir 24bit png
Lawrence Ryerson Davis IV

37

Önizleme uygulamasını kullanıyorsanız, jpg ve png arasında dışa aktarmaya ve ardından yeniden dışa aktarmaya gerek yoktur, yalnızca dışa aktarmayı seçin ve dosya türünün (PNG) altında bir alfa onay kutusu göreceksiniz, ayarını kaldırıp kaydedin.


4
Eskiden bu yöntemi kullanırdım, ancak MacOS High Sierra'da, Çıktı olarak JPG'yi seçmediğiniz sürece Önizleme'de Alpha işaretinin kaldırılması hiçbir şey yapmaz. Bir PNG açmaya çalışırsam, PNG'yi Alfa olmadan Dışa Aktar ve yeni PNG'yi açarsam, bir Alfa kanalı olur.
Dan Loughney

Benim için High Sierra'da çalıştı (10.13.4)
fl034

14

Önce resmi jpg'ye aktarmanıza gerek yoktur. Önizleme uygulamasında alfa kanalı onay kutusunun işaretini kaldırabilir ve doğrudan bir png'den alfa kanalı olmadan bir png'ye aktarabilirsiniz.

görüntü açıklamasını buraya girin


13

İmagemagick'i deneyebilirsiniz (ayrıca farklı boyutlar için kolayca yeniden boyutlandırın):

convert in.png -background black -alpha remove -alpha off -resize 1024x1024 out.png

cmd
bash'da

Marlhexs-MacBook-Pro: Edgar marlhex $ ls LUNCH SCREEN.jpg nuevo icon-5.png ÖĞLE YEMEĞİ EKRANI.png nuevo icon-51024 copy.jpg nuevo icon-5.jpg nuevo icon-51024.png Marlhexs-MacBook-Pro: Edgar marlhex $ nuevo icon-51024.png -bash: nuevo: komut bulunamadı
Marlhex

9

Uygulamamı iTunes uygulama mağazasına yüklemeye çalışırken şu hatayı aldım:

iTunes Store İşlemleri Başarısız Oldu

HATA ITMS-90717: "Geçersiz App Store Simgesi. 'MyApp.app'deki varlık kataloğundaki App Store simgesi şeffaf olamaz ve bir alfa kanalı içeremez."

Finder'da varlığı bularak ve bilgilerine bakarak (my + i) uygulama mağazası simgelerimin alfa kanalını içerdiğini doğruladım. Daha fazla bilgi altında şunu gösteriyordu:

Alfa kanalı: Evet

Alfa onay kutusu işaretlenmemiş olarak dışa aktararak alfa kanalını kaldırmak için Önizleme'yi kullanmak için yukarıdaki çözümü buldum, ancak alfa kanalını çıkarmam gereken 18 varlığım olduğundan bunları toplu olarak dışa aktarmanın bir yolunu buldum.

Çalışmak için toplu dışa aktarımın yolu, bulucuda tüm uygulama simgesi varlıklarımı seçmek> sağ tıklama> aç (veya önizlemeyle açmak)

Tüm varlıklar artık aynı pencerede görünecektir. Tümünü seçin (⌘ + a) ve ardından Dosya> Seçili Resimleri Dışa Aktar…> Seçenekleri Genişlet> Alfa onay kutusunun işaretini kaldırın> Seç (hedef klasörünüz)

Bitti! Tüm resimleriniz artık alfa kanalı çıkarılmış olarak dışa aktarılır.


1
Ben de aynı şeyi denedim ama artık High Sierra'da çalışmıyor. Önizleme'de alfa kanalları kaldırılmaz.
Satheeshwaran

6

Alfa kanalını png'den kaldırmak için:

Mac'te: Önizleme sürümü 9.0 (macOS Sierra), görüntüyü dışa aktarır veya kaydederseniz alfa kanalını kaldırabilir.

Önizleme sürümü 10.0 (944.2) (macOS High Sierra) alfa kanalını kaldırmaz. Hem Dışa Aktar hem / veya Kaydet, alfa kanalını görüntüden kaldırmaz.


2
Bu, Apple'ın son 2 facepalm sorununu vurguluyor ... High Sierra bir kaydetme seçeneğini görmezden geliyor VE birçok insanın burada olmasının nedeni, Xcode, simge şeffaflığı nedeniyle aniden uygulamaları yükleyemiyor
MobileVet

4

Flutter uygulamaları bağlamında da aynı problemle karşılaştıktan sonra, bu görev için alfa görüntü kanallarını kaldırabileceğiniz basit bir web sitesi ayırdım:

Alfa Kanalını Kaldır

Temel olarak ImageMagick'i Web Assembly'yi kullanarak doğrudan tarayıcıda çalıştırıyorum, böylece resimlerinizden hiçbiri yüklenmiyor ve Gimp gibi başka araçlara ihtiyacınız yok.


2

alfa onay kutusu artık önizlemede yok


Hala görebiliyorum ve kullanıyorum, dosyayı dışa aktarmanız gerekiyor.
Oscar

2
Buna ikinci olabilirim, gitti.
Wep0n

2

Mac'te olduğunuza göre, bir dahaki sefere muhtemelen Automator'ı kullanmak istersiniz. Görüntüyü BMP'ye (kayıpsız) ve tekrar PNG'ye dönüştürün. Bırak ve kurtarsın ...


0

Nikita Pushkar'ın çok güzel çözümünü, içinde bulunan tüm iOS simgelerini dönüştüren bir kabuk betiğine koydum res/icon/ios:

İmgeMagick'i kurmak için brew kullanıyor, bu yüzden sadece Mac'te çalışacağını tahmin ediyorum.

#! /usr/bin/env bash
#
# remove alpha channel from PNG images when App Store upload fails
#
# taken from https://stackoverflow.com/a/52962485 - @Nikita Pushkar
#
# make sure to have brew installed, see https://brew.sh:
#   /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
#
# make sure to have imagemagick installed, see https://imagemagick.org:
#   brew install imagemagick
#

if command -v convert; then
    echo "imagemagick seems to be installed"
else
    echo "imagemagick not installed, trying to install ..."
    if command -v brew; then
        echo "brew is installed, using it"
    else
        echo "brew not installed, trying to install ..."
        /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    fi

    brew install imagemagick
fi

for i in `ls res/icon/ios/*.png`;
do
    echo "convert $i"
    convert $i -background white -alpha remove -alpha off $i;
done

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.