ลบช่องอัลฟาในรูปภาพ


106

ฉันมีไอคอนแอพสำหรับ iOS แต่ Apple ไม่อนุญาตให้มีอัลฟ่าอยู่ในรูปภาพ จะลบช่องอัลฟ่านี้ได้อย่างไร ฉันมีแค่ภาพ png กับฉันฉันไม่มีไฟล์ต้นฉบับเพราะเพื่อนของฉันทำภาพให้ฉัน


5
เปิด PNG ในโปรแกรมแก้ไขภาพและบันทึกใหม่โดยปิดใช้งานช่องอัลฟาหรือไม่
— Alexander O'Mara

1
คำตอบที่ยอมรับจะสูญเสียข้อมูลรูปภาพและมีขั้นตอนพิเศษที่ไม่จำเป็น ดูวิธีแก้ปัญหาด้านล่างแทน: stackoverflow.com/a/38256612/5764320
— Mycah

ฉันยังได้สร้างเครื่องมือขนาดเล็กที่คุณสามารถลากและวางรูปภาพของคุณและลบช่องอัลฟาโดยไม่สูญเสียข้อมูลรูปภาพ: removealphachannel.com
— Ali Nasserzadeh

คำตอบ:


51

สมมติว่าคุณไม่มีโปรแกรมแก้ไขภาพอื่นคุณสามารถเปิดได้ในการแสดงตัวอย่างบน Mac ของคุณและใช้ตัวเลือกการส่งออกเพื่อบันทึกใหม่ในรูปแบบอื่นเพื่อให้แน่ใจว่าคุณได้กำจัดช่องอัลฟาแล้วการส่งออกอาจเป็นการดีที่สุด เป็น JPG (คุณภาพดีที่สุด) จากนั้นเปิดและส่งออกเป็น PNG อีกครั้ง

ต้องบอกว่าฉันสงสัยว่าคุณอาจจะโอเคในการส่งไอคอนที่มีช่องโปร่งใสตราบเท่าที่ไม่มีความโปร่งใสจริง


10
ซึ่งจะส่งผลให้คุณภาพสูญเสียไปเล็กน้อยและไฟล์ PNG ที่มีขนาดใหญ่ขึ้นด้วยเนื่องจากรูปแบบ PNG ไม่เหมาะสมในการบีบอัดประเภทของสิ่งประดิษฐ์ที่คุณได้รับเมื่อสร้างไฟล์ JPG นอกจากนี้ Apple ไม่ปฏิเสธภาพ PNG ที่มีช่องอัลฟาแม้ว่าจะไม่มีความโปร่งใสก็ตาม
— philwilks

ฉันลองใช้ macOS Sierra เวอร์ชันเก่าแล้วและใช้งานได้
— Bhaumik Desai

12
คุณสามารถยกเลิกการเลือกช่องทำเครื่องหมาย "อัลฟา" ได้ในขณะที่ส่งออกเป็น PNG ไม่จำเป็นต้องส่งออกเป็น JPG ก่อน
— Petr Peller

จะดำเนินการกับข้อมูลภาพเพื่อลดช่องภาพจาก 4 เป็น 3 ได้อย่างไร?
— voldikss

5
PNG ใด ๆ ที่มีช่องโปร่งใสจะไม่ได้รับการยอมรับไม่ว่าความโปร่งใสจะแสดงในรูปภาพหรือไม่ก็ตาม
— gbarnett

249

คำตอบที่ยอมรับในการส่งออกเป็น JPG แล้วไม่แนะนำให้กลับไปที่ PNG

  • เป็นขั้นตอนเพิ่มเติมในกระบวนการนี้ (การส่งออก 2 รายการ)
  • JPG นั้นสูญเสียดังนั้นคุณจะสูญเสียข้อมูลภาพบางส่วน

นี่เป็นวิธีที่ง่ายและรวดเร็วมากโดยไม่ต้องส่งออกเพิ่มเติมหรือบันทึกลงใน JPG (lossy):

การใช้แอพ Preview (Mac):

  1. เปิดภาพ
  2. Command-Shift-Sเพื่อทำซ้ำ (สร้างสำเนา)
  3. Command-Sเพื่อบันทึก
  4. ยกเลิกการเลือกช่องทำเครื่องหมาย"อัลฟ่า"
  5. ลบ "คัดลอก" จากชื่อไฟล์ (รวมช่องว่าง)
    • การดำเนินการนี้จะเขียนทับต้นฉบับของคุณหากคุณต้องการเก็บต้นฉบับไว้เพียงแค่ปล่อย "สำเนา" ไว้ในชื่อ
  6. บันทึก
  7. คลิก 'แทนที่'เพื่อยืนยันว่าคุณต้องการเขียนทับต้นฉบับ
    • จำเป็นเฉพาะในกรณีที่คุณเขียนทับต้นฉบับของคุณ ลบช่องอัลฟา

2
^ นี่คือคำตอบที่ดีกว่า IMHO JPG ไม่รองรับช่องอัลฟาและสิ่งนี้จะช่วยให้คุณใช้รูปแบบ LOSSLESS และจัดการกับช่องอัลฟ่า (แทนที่จะหลีกเลี่ยง)
— Cody-PHP-jQuery

4
ฉันไม่เข้าใจว่าเหตุใดทีม iTunes Store จึงแสดงข้อผิดพลาดนี้ (ช่องอัลฟ่า) ในไอคอนแอปนาฬิกาเมื่อในเวอร์ชันก่อนหน้าพวกเขาคิดว่าถูกต้อง หมดเวลา! ขอบคุณ Apple Inc!
— Markus

ขอบคุณมากสำหรับโซลูชันที่ไม่สูญเสีย!
— Shchvova

10
ด้วย macOS High Sierra การแสดงตัวอย่างดูเหมือนจะบันทึก PNG ด้วยช่องอัลฟาเสมอแม้ว่าจะไม่ได้เลือกช่องทำเครื่องหมายก็ตาม หากฉันเปิดไฟล์ที่บันทึกไว้ช่องข้อมูลจะเขียนว่า "Has Alpha: 1" เสมอ hasAlpha: yesเครื่องมือจิบยังบอกฉัน นอกจากนี้ iTunes Store ยังบ่นเกี่ยวกับช่องอัลฟ่าที่ไม่ต้องการ ("การดำเนินการล้มเหลว - ไอคอน App Store ... ไม่สามารถโปร่งใสหรือมีช่องอัลฟา")
— Stefan

2
ดังกล่าวโดย @Psychomentally, ImageMagick convert in.png -alpha off out.pngในที่สุดก็ทำงานให้ฉัน: เรื่อง ดูตัวอย่าง: การเปิด / ปิด "อัลฟา" ในกล่องโต้ตอบการส่งออกจะเปลี่ยนขนาดไฟล์ที่คาดการณ์ไว้ แต่การบันทึกจะเขียนไฟล์ด้วยข้อมูลอัลฟ่าเสมอ (และขนาดที่สอดคล้องกัน)
— Stefan

59

หากคุณต้องการลบช่องอัลฟาทั้งหมดออกจากไดเร็กทอรีที่มีไอคอนให้ใช้คำสั่งนี้:

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

หากคุณมี Mac OS Mojave และมี "ไม่พบคำสั่งแปลง"

brew install imagemagick

ในการติดตั้ง Homebrew

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

1
สิ่งนี้ให้ภาพเอาต์พุต 8 บิตแทนที่จะเป็น 24 บิต
— Stepan Yakovenko

2
ถ้าคุณเปลี่ยน-alpha remove -alpha off $i;ไป-alpha remove -alpha off png24:$i; ก็จะส่งออก 24bit PNG
— ลอว์เรนเดวิส Ryerson IV

37

หากคุณใช้แอป Preview ไม่จำเป็นต้องส่งออกแล้วส่งออกใหม่ระหว่าง jpg และ png เพียงเลือกส่งออกและด้านล่างประเภทไฟล์ (PNG) คุณจะเห็นช่องทำเครื่องหมายอัลฟ่ายกเลิกการตั้งค่าและบันทึก


4
ฉันเคยใช้วิธีนี้ แต่ใน MacOS High Sierra การยกเลิกการเลือก Alpha ใน Preview จะไม่ทำอะไรนอกจากคุณจะเลือก JPG เป็นผลลัพธ์ ถ้าฉันลองเปิด PNG ส่งออก PNG โดยไม่มีอัลฟ่าและเปิด PNG ใหม่มันจะมีช่องอัลฟ่า
— Dan Loughney

ทำงานให้ฉันใน High Sierra (10.13.4)
— fl034

14

ไม่จำเป็นต้องส่งออกภาพเป็น jpg ก่อน คุณสามารถยกเลิกการเลือกช่องทำเครื่องหมายสำหรับช่องอัลฟาและส่งออกโดยตรงจาก png เป็น png โดยไม่มีช่องอัลฟาในแอปตัวอย่าง

ป้อนคำอธิบายภาพที่นี่


13

คุณสามารถลอง imagemagick (ปรับขนาดได้อย่างง่ายดายสำหรับขนาดต่างๆ):

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

ฉันจะเลือกไฟล์ png บน cmd bash ได้อย่างไร
— Marlhex

Marlhexs-MacBook-Pro: Edgar marlhex $ ls LUNCH SCREEN.jpg nuevo icon-5.png LUNCH SCREEN.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: command not found
— Marlhex

9

เพิ่งได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามอัปโหลดแอปของฉันไปที่ iTunes app store:

การดำเนินการของ iTunes Store ล้มเหลว

ข้อผิดพลาด ITMS-90717: "ไอคอน App Store ไม่ถูกต้องไอคอน App Store ในแค็ตตาล็อกเนื้อหาใน" MyApp.app "ต้องไม่โปร่งใสและไม่มีช่องอัลฟา"

ฉันยืนยันว่าไอคอนแอพสโตร์ของฉันมีช่องอัลฟาด้วยการค้นหาเนื้อหาใน Finder และค้นหาข้อมูล (⌘ + i) ภายใต้ข้อมูลเพิ่มเติมแสดงให้เห็น:

ช่องอัลฟ่า: ใช่

พบวิธีแก้ปัญหาด้านบนเพื่อใช้การแสดงตัวอย่างเพื่อลบช่องอัลฟ่าโดยการส่งออกโดยไม่ได้ทำเครื่องหมายในช่องอัลฟ่า แต่คิดวิธีส่งออกเป็นกลุ่มเนื่องจากฉันมีเนื้อหา 18 รายการที่ฉันต้องการเพื่อถอดช่องอัลฟ่าออก

วิธีที่ฉันได้รับการส่งออกเป็นกลุ่มไปทำงานคือการเลือกเนื้อหาไอคอนแอปทั้งหมดของฉันในตัวค้นหา> คลิกขวา> เปิด (หรือเปิดด้วยการดูตัวอย่าง)

ตอนนี้เนื้อหาทั้งหมดจะปรากฏในหน้าต่างเดียวกัน เลือกทั้งหมด (⌘ + a) จากนั้นเลือกไฟล์> ส่งออกรูปภาพที่เลือก…> ขยายตัวเลือก> ยกเลิกการเลือกช่องทำเครื่องหมายอัลฟ่า> เลือก (โฟลเดอร์ปลายทางของคุณ)

เสร็จแล้ว! ขณะนี้ภาพทั้งหมดของคุณจะถูกส่งออกโดยปิดช่องอัลฟา


1
ฉันลองแบบเดียวกัน แต่ใช้งานไม่ได้อีกต่อไปบน High Sierra ช่องอัลฟ่าจะไม่ถูกลบออกในการแสดงตัวอย่าง
— Satheeshwaran

6

ในการลบช่องอัลฟาจาก png:

บน Mac: การแสดงตัวอย่างเวอร์ชัน 9.0 (macOS Sierra) สามารถลบช่องอัลฟาได้หากคุณส่งออกหรือบันทึกภาพ

ดูตัวอย่างเวอร์ชัน 10.0 (944.2) (macOS High Sierra) ไม่ได้ลบช่องอัลฟา ทั้งการส่งออกและ / หรือบันทึกไม่ได้ลบช่องอัลฟาออกจากภาพ


2
สิ่งนี้เน้น 2 ปัญหา facepalm ล่าสุดของ Apple .... High Sierra ที่ไม่สนใจตัวเลือกการบันทึกและสาเหตุที่หลายคนมาที่นี่ Xcode ไม่สามารถอัปโหลดแอปได้ทันทีเนื่องจากความโปร่งใสของไอคอน
— MobileVet

4

หลังจากพบปัญหาเดียวกันในบริบทของแอปพลิเคชัน Flutter ฉันได้ทุ่มเทเว็บไซต์ง่ายๆสำหรับงานนี้ซึ่งคุณสามารถลบช่องอัลฟาของรูปภาพ:

ลบ Alpha Channel

โดยทั่วไปฉันเรียกใช้ ImageMagick โดยใช้ Web Assembly โดยตรงในเบราว์เซอร์ดังนั้นจึงไม่มีการอัปโหลดรูปภาพของคุณและคุณไม่จำเป็นต้องใช้เครื่องมืออื่น ๆ เช่น Gimp


2

ช่องทำเครื่องหมายอัลฟ่าไม่มีในการแสดงตัวอย่างอีกต่อไป


ฉันยังสามารถมองเห็นและใช้งานได้คุณต้องส่งออกไฟล์
— ออสการ์

2
ฉันสามารถที่สองนี้มันหายไป
— Wep0n

2

เนื่องจากคุณใช้ Mac ครั้งต่อไปคุณอาจต้องการใช้ Automator แปลงรูปภาพเป็น BMP (ไม่สูญเสีย) และกลับเป็น PNG ปล่อยให้มันบันทึกและ voila ...


0

ฉันใส่โซลูชันที่ดีมากของ Nikita Pushkar ลงในเชลล์สคริปต์ที่แปลงไอคอน iOS ทั้งหมดที่พบในres/icon/ios:

มันใช้การชงเพื่อติดตั้ง imagemagick ถ้าไม่มีดังนั้นฉันเดาว่ามันจะทำงานบน Mac เท่านั้น

#! /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

-2

ฉันมีปัญหาเดียวกันนี้ แต่คำตอบอื่น ๆ ไม่ได้ผลสำหรับฉันในตอนนี้ (อาจเป็นข้อบกพร่องของ Apple) ฉันพบว่าคุณสามารถใช้เว็บไซต์นี้เพื่อลบช่องอัลฟาออกจากรูปภาพได้


2
แต่นี่เป็นเว็บไซต์เดียวกับที่นี่: stackoverflow.com/a/59591313/5468463
— Vega

คำตอบที่ซ้ำกัน
— Repose
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.