Hình ảnh được tạo bởi GD GD Hình ảnh không thể được hiển thị vì nó chứa các lỗi trong Firefox

Hình ảnh được tạo bởi GD GD Hình ảnh không thể được hiển thị vì nó chứa các lỗi trong Firefox

Khi tạo hình ảnh bằng PHP, ví dụ thêm hình mờ vào hình ảnh được lưu trữ trên máy chủ, sử dụng mã bên dưới hoặc hình tương tự có JPEG thay vì PNG, hình ảnh có thể không được tạo và ném lỗi, hiển thị trực tiếp trên Firefox, nhưng không trên Chrome.

Loại mã này, mặc dù hoạt động trên một số máy chủ, hiện có thể hoạt động trên một số máy chủ khác, đôi khi vì những lý do không rõ ràng. Trong trường hợp của tôi, nó hoạt động hoàn toàn tốt tại địa phương, nhưng được sản xuất dưới đây lỗi trên máy chủ internet, hình ảnh không thể được hiển thị bởi vì nó có lỗi.

Vấn đề có thể đến từ một số lý do, dưới đây là một số lý do:

Đầu ra đã được đặt trước đó.

Lỗi chính hãng từ tạo hình ảnh.

Loại hình ảnh sai được sử dụng.

Thư viện hình ảnh chưa được cài đặt.

$stamp = imagecreatefrompng('watermark.png');
if(!$im = imagecreatefrompng('image.png')) die('Error generating image');
$marge_right = $marge_bottom = 10;
$sx = imagesx($stamp);
$sy = imagesy($stamp);

$copyimage = imagecopy($im, $stamp, imagesx($im) - $sx - $marge_right, imagesy($im) - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp));

header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
if(!imagedestroy($im)) die('Error generating image');
if(!imagedestroy($stamp)) die('Error generating image');

Đầu ra đã được đặt trước đó

Thậm chí nếu không cố ý, có thể là trường hợp ví dụ các tập lệnh trước đó có chứa dấu cách ở cuối - để tránh lỗi này, hãy đảm bảo, như PHP đề xuất, không đóng các tập lệnh bằng thẻ kết thúc PHP?>

Sau đó, trước khi sử dụng chức năng tiêu đề, hãy sử dụng mã sau để đảm bảo rằng bất kỳ tiêu đề nào được đặt trước đó bị hủy

foreach (getallheaders() as $name => $value) {
header_remove($name);
}

Và cũng có chức năng này để đảm bảo không có đầu ra nào được tạo trước tiêu đề và hình ảnh

ob_end_clean();

Điều này giải quyết vấn đề trong trường hợp của tôi, và hình ảnh được hiển thị một cách chính xác một lần nữa.

Lỗi chính hãng từ tạo hình ảnh

Trong trường hợp xảy ra lỗi thực sự trong quá trình tạo hình ảnh, hãy đảm bảo PHP được đặt để hiển thị tất cả các loại lỗi có thể xảy ra và kiểm tra nhật ký tương ứng để có thể theo dõi và giải quyết nó.

Mã sau sẽ làm cho PHP báo cáo tất cả các lỗi trong nhật ký:

error_reporting(E_ALL);
ini_set('display_errors', '1');

Sau đó bạn có thể tìm ra rằng một số lỗi đã được báo cáo, ngay cả khi chúng không xuất hiện trong html đầu ra, do cấu hình máy chủ.

Loại hình ảnh sai được sử dụng

Đảm bảo rằng các loại hình ảnh bạn đang sử dụng là chính xác, ví dụ sử dụng mã này để phân biệt giữa png và jpeg.

Đồng thời đảm bảo tiêu đề chính xác theo đầu ra được sử dụng, tùy thuộc vào chức năng tạo hình ảnh được sử dụng

//to generate png image
header('Content-type: image/png');
if(!imagepng($im)) die('Error generating image');
//to generate jpeg image
header('Content-type: image/jpeg');
if(!imagejpeg($im)) die('Error generating image');

Thư viện hình ảnh chưa được cài đặt

Để đảm bảo thư viện hình ảnh được cài đặt. Để làm như vậy, hãy chạy hàm phpinfo (); trong một tập lệnh, và kiểm tra đầu ra cho giá trị sau liên quan đến PHP GD, thư viện đồ họa được sử dụng bởi các hàm như imagepng ();

Trong trường hợp các gói bị thiếu, cách giải quyết nó phụ thuộc vào cấu hình cục bộ của bạn, hoặc bằng cách thêm gói bằng cách sử dụng lệnh PEAR hoặc sử dụng máy chủ web được xây dựng trong giải pháp để cài đặt gói.

Phải làm gì khi imagejpeg hoặc imagepng không hoạt động

Trong NotePad ++, mở tệp PHP gọi hàm imagepng và lưu tệp sau khi vào menu Mã hóa> Chuyển đổi sang UTF-8 mà không cần BOM.

Trong DreamWeaver, đi đến Thuộc tính trang> Tiêu đề / Mã hóa> bỏ chọn Bao gồm Chữ ký Unicode (BOM).

Khi PHP imagejpeg hoặc imagepng không hoạt động, rất có thể là do tệp PHP đã được mã hóa bằng BOM, Bill Of Material và do đó thông tin bổ sung được gửi cùng với hình ảnh trước dữ liệu hình ảnh.

Các hàm imageppeg và imagepng PHP là các hàm được sử dụng để gửi mã hình ảnh trực tiếp trong phản hồi của máy chủ.

PHP - imagepng không hoạt động đúng
PHP - hàm imagepng
PHP - chức năng imagejpeg

Đọc thêm

Bài viết tương tự

Bình luận (6)

Irvin Vasquez, 2018-08-19
Simple, clear and well explained, many thanks
Joyce Lawrence, 2018-08-19
ありがとう、非常に有益な
Catherine Roberts, 2018-08-19
Dokładnie tego, czego szukałem, idealnie
Headlinext, 2018-08-19
जानकारी का महान टुकड़ा, साझा करने के लिए धन्यवाद
Marshel, 2018-08-19
विश्वास नहीं कर सकता कि मुझे अंत में समाधान मिला, यह लंबे समय तक एक दुःस्वप्न था, अब हल हो गया
porcateraC, 2018-08-19
بالضبط ما كنت أبحث عنه ، مثالي

Để lại một bình luận