Tôi đã cố gắng minh bạch để làm việc với ứng dụng của mình (tự động định lại kích thước hình ảnh trước khi lưu trữ) và tôi nghĩ cuối cùng tôi đã thu hẹp vấn đề sau nhiều sự nhầm lẫn về imagealphablending
và imagesavealpha
. Hình ảnh nguồn không bao giờ được nạp với độ trong suốt phù hợp!PHP GD imagecreatefromstring discards minh bạch
// With this line, the output image has no transparency (where it should be
// transparent, colors bleed out randomly or it's completely black, depending
// on the image)
$img = imagecreatefromstring($fileData);
// With this line, it works as expected.
$img = imagecreatefrompng($fileName);
// Blah blah blah, lots of image resize code into $img2 goes here; I finally
// tried just outputting $img instead.
header('Content-Type: image/png');
imagealphablending($img, FALSE);
imagesavealpha($img, TRUE);
imagepng($img);
imagedestroy($img);
Sẽ là một số khó khăn về kiến trúc nghiêm trọng khi tải hình ảnh từ tệp; mã này đang được sử dụng với API JSON được truy vấn từ ứng dụng iPhone và dễ dàng hơn trong trường hợp này (và nhất quán hơn) để tải lên hình ảnh dưới dạng chuỗi được mã hóa base64 trong dữ liệu POST. Tôi có hoàn toàn cần bằng cách nào đó lưu trữ hình ảnh dưới dạng tệp (chỉ để PHP có thể tải nó vào bộ nhớ một lần nữa)? Có cách nào để tạo Luồng từ $fileData
có thể được chuyển đến imagecreatefrompng
không?
Không thể tạo lại sự cố trên 'PHP 5.3.10/GD 2.0', Làm việc tốt. Bạn đang sử dụng phiên bản nào? Có thể đến từ một thứ khác .. Mục nhập PNG bị hỏng? Giống như ứng dụng iPhone tải lên hình ảnh có chất lượng kém? Chỉ những bức ảnh trong bóng tối – Touki
Tôi đã thử nghiệm điều này trên 'PHP 5.3.16-1 ~ dotdeb.0' (với Suhosin) với' GD 2.0.34' (tương thích 2.0.34) trên hộp Debian của tôi, và khi tôi chạy 'imagepng 'các phần trong suốt là màu đen. Điều này xảy ra khi tôi sử dụng 'imagecreatefromstring' hoặc' imagecreatefrompng'. –
Tôi đang ở trong PHP 5.3.10/GD (2.0.34 tương thích). – meustrus