Tôi đã xem xét tất cả về cách quản lý đúng alpha khi tôi đổi kích thước png. Tôi đã cố gắng làm cho nó giữ được độ trong suốt, nhưng chỉ cho các pixel hoàn toàn trong suốt. Dưới đây là mã của tôi:Thay đổi kích thước hình ảnh với tính minh bạch trong php
$src_image = imagecreatefrompng($file_dir.$this->file_name);
$dst_image = imagecreatetruecolor($this->new_image_width, $this->new_image_height);
imagealphablending($dst_image, true);
imagesavealpha($dst_image, true);
$black = imagecolorallocate($dst_image, 0, 0, 0);
imagecolortransparent($dst_image, $black);
imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $this->new_image_width,
$this->new_image_height, $this->image_width, $this->image_height);
imagepng($dst_image, $file_dir.$this->file_name);
Bắt đầu với hình ảnh nguồn này:
Những hình ảnh thay đổi kích cỡ trông như thế này:
Các giải pháp cho hầu hết các bài diễn đàn tôi đã xem xét về vấn đề này nói để làm một cái gì đó như thế này:
imagealphablending($dst_image, false);
$transparent = imagecolorallocatealpha($dst_image, 0, 0, 0, 127);
imagefill($dst_image, 0, 0, $transparent);
Kết quả từ mã này không thành công ở tiết kiệm bất kỳ alpha nào:
Có giải pháp nào khác? Tôi có thiếu thứ gì đó với pha trộn alpha không? Tại sao điều đó lại hiệu quả với mọi người, nhưng thất bại hoàn toàn đối với tôi? Tôi đang sử dụng MAMP 2.1.3 và PHP 5.3.15.
bản sao có thể có của [Làm cách nào để thay đổi kích thước các png bằng tính minh bạch trong PHP?] (Http://stackoverflow.com/questions/279236/how-do-i-resize-pngs-with-transparency-in-php) – Danack
Tôi đã thử các giải pháp được đưa ra trong bài đăng đó (và nhiều bài khác). Họ không làm việc gì cả và tôi không chắc tại sao. – user2458399