Độ trong suốt đối với RGB + Alpha chưa được phân loại


16

Tôi có một lớp trong suốt trong Photoshop CS5 (vì vậy bên trong, rất có thể nó được lưu trữ dưới dạng thành phần RGB chưa được xử lý cộng với thành phần alpha trên mỗi pixel).

Bây giờ tôi muốn chuyển đổi lớp này thành một lớp mờ đục (chỉ là RGB chưa được xử lý) + mặt nạ alpha. kết quả sẽ trông giống như bản gốc.

Tôi không thể chỉ tô màu cho lớp trong suốt bằng màu đen, lấy phần chọn từ nó làm mặt nạ và hợp nhất các lớp, vì điều này sẽ dẫn đến việc alpha được xử lý trước trong các giá trị RGB.

Tôi hy vọng bạn hiểu vấn đề và có thể cho tôi một giải pháp cho nó.

Như một lời giải thích khác: Tôi muốn quy trình REVERSE này:

  1. tạo một layer mới và dán vào bất kỳ hình ảnh nào
  2. tạo mặt nạ với độ dốc từ trắng sang đen
  3. áp dụng mặt nạ lớp

Hình ảnh giải thích:

Bang A: nhập mô tả hình ảnh ở đây

Bang B: nhập mô tả hình ảnh ở đây


QUAN TRỌNG: lớp chỉ dành cho ví dụ này có màu đỏ hoàn toàn không đổi - nhưng bạn có thể nghĩ về bất kỳ hình ảnh tùy ý nào thay vì màu đỏ không đổi. vì vậy - để đi từ trạng thái A sang trạng thái B, người ta chỉ cần áp dụng mặt nạ lớp.

Tôi muốn biết làm thế nào để đi từ bang B đến bang A.


Tôi tự hỏi nếu một số loại trình cắm mặt nạ có thể giúp đỡ ở đây. Thông tin về độ mờ đục tồn tại, đó chỉ là vấn đề làm thế nào để có được nó. Nhận thông tin ở cấp độ pixel không tồn tại trong các API tập lệnh (ít nhất là trong Applescript, nhưng tất cả các ngôn ngữ được hỗ trợ dường như phù hợp với những gì tôi đã thấy).
Philip Regan

Câu trả lời:



5

Sai lầm! Sai hết!

Tôi đã tự lừa mình và bạn cũng vậy trong quá trình: Những gì tôi tạo ra thực sự là một hình ảnh được sắp xếp sẵn - không phải là màu đen với màu đen mà là màu trắng. Tôi để câu trả lời này cho người khác xây dựng dựa trên nó.


Tôi quản lý để làm điều đó như thế này:

  1. Trích xuất các kênh RGBA thực từ hình ảnh
  2. Sử dụng chúng để xây dựng hình ảnh mới

Và đây là cách tôi đã làm:

hình ảnh thử nghiệm

Đây là hình ảnh thử nghiệm tôi đã sử dụng. Chế độ xem kênh trong PS trông như thế này:

kênh truyền hình

Bằng cách chọn các kênh riêng lẻ, tôi đã sao chép chúng thành các lớp riêng lẻ, sau đó làm phẳng chúng với nền trắng để nhận bản đồ đen trắng như hiển thị ở đây:

bản đồ

Tôi cũng trích xuất độ trong suốt của ảnh gốc thành một lớp bằng cách nhấp vào lệnh trên hình thu nhỏ của lớp và điền vào một lớp mới với vùng chọn.

Sau đó, tôi đã tạo ra một hình ảnh mới với cùng kích thước và không có độ trong suốt. Sau đó tôi dán các lớp RGB mà tôi đã tạo vào các kênh tương ứng trong hình ảnh mới:

kênh hình ảnh mới

Ở bước cuối cùng, tôi 'hủy kết nối' lớp bằng cách nhấp đúp và tạo mặt nạ lớp bằng cách sử dụng lớp alpha từ ảnh gốc, dẫn đến điều này:

lớp mặt nạ


Như đã nêu ở trên, điều này không tạo ra một hình ảnh không được xử lý trước, vì ví dụ của tôi sẽ phải trông như thế này là không có nguyên tắc:

phiên bản chính xác

Có ai thông minh hơn tôi và có thể tạo ra điều này? Tôi nghĩ rằng không có kịch bản dựa trên pixel nâng cao, điều này là không thể trong Photoshop.


5

Ok - Tôi đã tạo một bộ lọc pixelBender đơn giản có thể được sử dụng với plugin PixelBender của photoshop (http://labs.adobe.com/doads/pixelbenderplugin.html) để xóa độ trong suốt cho một lớp. đây là: http://neo.cycovery.com/removeTrans minh.pbk


2

Dựa trên các câu trả lời được đưa ra và nhận xét của bạn, câu trả lời ngắn gọn là: bạn không thể làm những gì bạn muốn. Khi bạn áp dụng mặt nạ, lớp được hiển thị và dữ liệu hình ảnh không nhìn thấy được ném đi.

BIÊN TẬP:

Tôi đã tạo một số tệp png mẫu và sau đó sử dụng php để thao tác chúng (mã nguồn bên dưới).

Nếu tôi tạo png với độ trong suốt ngẫu nhiên và lưu trong khi lớp có mặt nạ, thì các vùng rõ ràng 100% (chẳng hạn như từ công cụ hộp) hiển thị màu trắng cho dù hỗ trợ alpha có được kích hoạt hay không. Các lớp chứa một số lượng rõ ràng 100% không hiển thị với alpha bị vô hiệu hóa.

Nếu tôi áp dụng mặt nạ lớp (vĩnh viễn) và sau đó tạo png, thì php sẽ phục vụ hình ảnh gốc nếu alpha bị tắt.

Vì vậy, một cách giải quyết tiềm năng cho việc này là tìm một gói phần mềm không hỗ trợ alpha PNG và lưu lại nó từ đó. Đối với việc phục hồi mặt nạ ban đầu, tôi chưa nhìn vào đó.

Cả hai mẫu mã đều là bằng chứng của khái niệm và SLOW.

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$enable_alpha = 0;  //set to 0 to disable aplha

if ($enable_alpha) {
    imagealphablending($im, false);
    imagesavealpha($im, true);
}

header('Content-Type: image/png');
imagepng($im);

imagedestroy($im);

?>

Để trích xuất alpha (lưu ý: php có giới hạn GD là 128 cấp độ alpha, thay vì 256), do đó một số độ chính xác bị mất. Bản alpha có thể được kéo dài thành 256 bằng công cụ cấp độ)

<?php

$im = imagecreatefrompng('./images/alphatest_nolayer.png');
$w = imagesx($im);
$h = imagesy($im);

$om = imagecreatetruecolor($w,$h);

for ($x = 0; $x < $w; $x++) {
    for ($y = 0; $y < $h; $y++) {
        $rgb = imagecolorat($im, $x, $y);
        $colors = imagecolorsforindex($im,  $rgb);

        $orgb = imagecolorallocate($om,$colors['alpha'],$colors['alpha'],$colors['alpha']);
        imagesetpixel($om,$x,$y,$orgb);
    }
}

header('Content-Type: image/png');
imagepng($om);

imagedestroy($om);
imagedestroy($im);

?>

nhưng dữ liệu vẫn còn đó. đó là phần RGB của dữ liệu pixel RGBA. phải có một cách để giải nén nó
Mat

1
Tại sao bạn không cung cấp một tệp ví dụ trong thế giới thực? Trong câu hỏi của bạn, bạn hiển thị rõ ràng một lớp duy nhất với vùng trong suốt và không có mặt nạ, cũng không có dấu hiệu của kênh alpha.
horatio

.png có màu bảng màu được xác định trước cho màu đen trong suốt 100%, có thể được sử dụng (bằng photoshop) bất cứ khi nào có độ trong suốt 100% chỉ để tiết kiệm một số không gian đĩa.
Ars Magika

Không chắc chắn điều này thực sự trả lời câu hỏi - dường như là cụ thể để xử lý PNG.
e100

2

Tôi đã tìm ra cách để làm điều đó trong GIMP, nó có thể không phải là PhotoShop nhưng ít nhất nó sẽ làm những gì bạn yêu cầu. (Như tôi giải thích bằng mọi cách;))

  • Mở hình ảnh trong GIMP.
  • Nhấp bằng nút chuột phải của bạn trên lớp trong hộp lớp
  • Chọn " thêm lớp mặt nạ " từ menu ngữ cảnh
  • Trong menu sau, chọn " kênh chuyển kênh alpha " và nhấp vào " thêm " -button

Tại thời điểm này, bạn để lại một hình ảnh với mặt nạ kênh alpha.

Bạn có thể tiến thêm một bước:

  • Nhấp chuột phải vào mặt nạ lớp và chọn " xóa mặt nạ lớp "
  • Bây giờ bạn còn lại với hình ảnh mà không có mặt nạ alpha.

Ngoài ra còn có một clip youtube về cách làm điều đó.


Roberto: Vâng, bạn đã tìm thấy câu trả lời. Đó chính xác là những gì chúng ta muốn, và nó miễn phí !! Tôi sẽ sử dụng video mà bạn đã đăng làm câu trả lời cho bất kỳ người nào khác hỏi tương tự (cho đến bây giờ chỉ có thể bằng cách sao chép vô hạn lớp trong PS)

1

Điều này có vẻ phức tạp tâm trí. Nếu tôi hiểu chính xác câu hỏi ban đầu và các cách làm rõ khác nhau của nó, vấn đề là lấy bất kỳ hình ảnh tùy ý nào có độ trong suốt và làm cho nó hoàn toàn mờ đục, sau đó áp dụng các giá trị alpha ban đầu làm mặt nạ để tạo lại diện mạo ban đầu.

Nếu đây là câu hỏi, thì đây là một câu trả lời rất đơn giản, nếu hơi tẻ nhạt.

  1. Sao chép layer 10 lần. Độ trong suốt sẽ "điền" vào hình ảnh tổng hợp.

  2. Hợp nhất tất cả các bản sao (nhưng KHÔNG phải lớp gốc , mà bạn sẽ cần cho các bước cuối cùng).

  3. Lặp lại bước 1 và 2 với lớp đã hợp nhất, sau đó thực hiện lại. Tại thời điểm này, tất cả các pixel có độ trong suốt dưới 100% hiện mờ đục 100% (nếu có một số bước, chỉ cần lặp lại quy trình cho đến khi không có). Đó là càng nhiều thông tin hình ảnh càng tốt để phục hồi.

  4. Ctl / Cmd - Nhấp vào hình thu nhỏ của lớp ban đầu để tải độ trong suốt của nó.

  5. Với lớp mới, mờ đục được chọn, nhấp vào biểu tượng mặt nạ lớp trong Bảng điều khiển Lớp.


0

Ok, điều này thực sự khá đơn giản (bạn phải bỏ qua những con kiến ​​diễu hành)

Tạo một lớp mới và tô nó hoàn toàn với bất kỳ màu nào bạn đang sử dụng (nếu lấy mẫu lấy nó từ trung tâm chết của hình ảnh đầu tiên)

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Sau đó lấy hình ảnh đầu tiên của bạn và CTRL + Nhấp vào hình thu nhỏ của lớp, bạn sẽ thấy một số phiên bản này: nhập mô tả hình ảnh ở đây

Như tôi đã nói trước đây: bỏ qua những con kiến ​​diễu hành, việc vặt lông có hiệu lực tự động trong CS5.

Sau đó, đảm bảo bạn đã chọn lớp đầy và nhấp vào nút mặt nạ:

nhập mô tả hình ảnh ở đây

Sau đó, chỉ cần ẩn lớp dưới cùng và bạn sẽ được thực hiện, với hiệu ứng chính xác bạn đang theo sau :)

nhập mô tả hình ảnh ở đây

Và đó là cách thiết kế đảo ngược mặt nạ ứng dụng trong CS5. Chức năng chọn lớp CS5 khá tiên tiến, vì vậy, hầu hết mọi lúc chỉ bỏ qua những con kiến ​​diễu hành vì chúng không hiển thị chính xác bất kỳ lông vũ nào sẽ diễn ra với lựa chọn :)

Hi vọng nó sẽ dễ dàng cho bạn.


cảm ơn câu trả lời của bạn nhưng đây không phải là điều tôi đang tìm kiếm - như đã giải thích, màu đỏ không đổi chỉ là ví dụ này! nó có thể là BẤT K image hình ảnh nào (không chỉ là màu tô không đổi) - và đáng tiếc hơn là tôi không có hình ảnh chưa được chỉnh sửa ban đầu
Mat

Vâng, bạn nên đăng hình ảnh của bạn trong câu hỏi của bạn. Nếu bạn đăng một liên tục điền, chúng tôi sẽ trả lời dựa trên điền liên tục. Hãy thử sử dụng các kỹ thuật ở đây mặc dù, lựa chọn của CS5 rất tiên tiến, nó có thể làm bạn ngạc nhiên. Nó đã làm tôi.
Kyle

Tất nhiên tôi biết về những kỹ thuật lựa chọn! vấn đề được đặt ra là làm thế nào để truy cập vào phần RGB chỉ trong một lớp trong suốt
Mat

Trên các lớp có ba tab, nhấp vào các kênh. Ở đó bạn có Mặt nạ đỏ, xanh lá cây, xanh dương và lớp. Có lẽ đây là những gì bạn đang theo đuổi?
Kyle

nhưng một lớp như trong neo.cycovery.com/alpha_prob2.jpg không hiển thị kênh alpha - thay vào đó, nó chỉ hiển thị các kênh RG và B với độ trong suốt đã được áp dụng
Mat

0

Những gì bạn muốn làm được thực hiện dễ dàng bởi một plugin, như plugin "Loại bỏ tính minh bạch" của Photofree sở thích. Trước tiên, bạn nhấp chuột vào lớp để chọn các pixel trong suốt, sau đó lưu thông tin trong suốt này vào một kênh mới để giữ nó xung quanh. Sau đó, bạn áp dụng bộ lọc "Xóa độ trong suốt" và bạn thấy các pixel 'ẩn' trong lớp của mình chuyển sang màu đục (khá thú vị để xem cách Photoshop bố trí các pixel trong suốt 100% của bạn BTW). Tôi thực sự mong muốn trong nhiều năm rằng điều này đã được tích hợp vào Photoshop, nhưng than ôi, quá cao cấp tôi đoán.

Thật không may, tôi không thể tìm thấy phiên bản tương thích với Photoshop CS6 của một plugin như vậy cho Mac, vì vậy tôi bị mắc kẹt ngay bây giờ. GraphicConverter cũng có thể làm điều đó (Xóa kênh Alpha).


0

Đây là câu trả lời:

  1. Tạo một layer với những thứ bạn muốn trong hình ảnh.

  2. Thực hiện lựa chọn cho kênh alpha mong muốn.

  3. Đặt vùng chọn là "lớp mặt nạ" cho lớp hình ảnh.

  4. Nhấp chuột phải vào mặt nạ lớp và "Áp dụng mặt nạ lớp".

Bây giờ phép thuật bắt đầu:

  1. Chuyển đến "Lớp" và ở dưới cùng: "Làm mờ", sau đó chọn "Xóa đen mờ".

Không có gì!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.