Làm cách nào để xoay hình ảnh trong PHP?

Nó có thể đọc siêu dữ liệu EXIT của hình ảnh và xoay hoặc phản chiếu hình ảnh theo hướng hiện tại

Hình ảnh đã xoay được lưu trở lại tệp ở cùng định dạng

Làm cách nào để xoay hình ảnh trong PHP?


Nếu bạn có một trang web nơi người dùng có thể tải ảnh lên, bạn sẽ gặp rắc rối. Ảnh chụp bằng điện thoại thông minh hoặc máy ảnh kỹ thuật số có thể bao gồm một số dữ liệu EXIF, làm cho hình ảnh được xoay 90??, 180??

Bạn có thể sử dụng class.ExifCleaning.php để xóa siêu dữ liệu exif, vì vậy hình ảnh sẽ xuất hiện bình thường

Trước tiên, bạn phải đưa lớp này vào tập lệnh lấy hình ảnh người dùng và lưu trữ nó trên đĩa máy chủ. include ("path_to_the_class_file/class.ExifCleaning.php");

Bạn phải chắc chắn đường dẫn đến tệp hình ảnh và bản thân tệp hình ảnh có thể ghi được Apache. Tôi đoán là có, hoặc bạn không thể lưu hình ảnh với move_uploaded_file()

Bây giờ (khi hình ảnh được lưu vào đĩa) hãy viết một câu như thế này

ExifCleaning::adjustImageOrientation("path_to_the_image_file/image_file.jpg"); // Most of the smartphones / digital cameras images are jpg type.

Đó là tất cả. Bây giờ siêu dữ liệu xoay EXIF ​​​​đã bị xóa và hình ảnh sẽ được hiển thị chính xác trong trang web của bạn

Phiên bản này hỗ trợ hình ảnh jpg, gif, png hoặc bmp

Bạn có thể đọc thêm (bằng tiếng Tây Ban Nha) trên https. // eldesvandejose. com/2017/02/21/rotacion-automatica-de-imagenes/

bool imagecopyresize ( resource dest_image, resource source_image, int dest_x, int dest_y, int source_x, int source_y, int dest_width, int dest_height, int source_width, int source_height)

bool imagecopyresampled ( resource dest_image, resource source_image, int dest_x, int dest_y, int source_x, int source_y, int dest_width, int dest_height, int source_width, int source_height)

tài nguyên imagerotate ( tài nguyên source_image, float angle, int background_color)

PHP cung cấp cho bạn hai cách khác nhau để thay đổi kích thước hình ảnh và bạn nên chọn cách phù hợp với nhu cầu của mình. Tùy chọn đầu tiên, imagecopyresized(), cho phép bạn thay đổi kích thước của hình ảnh một cách nhanh chóng và dễ dàng, nhưng có nhược điểm là tạo ra hình ảnh có chất lượng khá thấp. Khi một hình ảnh có chi tiết được thay đổi kích thước, răng cưa ("răng cưa") thường hiển thị, điều này làm cho phiên bản đã thay đổi kích thước khó đọc, đặc biệt nếu thay đổi kích thước ở một kích thước khác thường. Tùy chọn khác là imagecopyresampled(), có cùng tham số như imagecopyresized() và hoạt động theo cách tương tự, ngoại trừ hình ảnh đã thay đổi kích thước được làm mịn để nó vẫn hiển thị. Nhược điểm ở đây là việc làm mịn cần nhiều nỗ lực của CPU hơn, do đó hình ảnh mất nhiều thời gian hơn để tạo ra

Đây là một ví dụ về imagecopyresized() đang hoạt động - lưu nó dưới dạng hiệu ứng đặc biệt. php


Có hai hình ảnh đang được sử dụng trong đó. Cái đầu tiên, $src_img, được tạo từ ảnh chụp màn hình PNG của hướng dẫn sử dụng PHP trực tuyến - cái này chứa nhiều văn bản, làm nổi bật vấn đề răng cưa với imagecopyresized() một cách độc đáo. Các biến $dest_x và $dest_y được đặt thành chiều rộng và chiều cao của phức tạp. png chia cho 1. 5, sẽ đặt kích thước đích là 66% kích thước nguồn. Thay đổi kích thước các giá trị "chính xác" chẳng hạn như 10%, 50%, v.v. thường trông đẹp hơn thay đổi kích thước các giá trị bất thường như 66%, 79%, v.v.

Hình ảnh thứ hai sau đó được tạo bằng cách sử dụng imagecreatetruecolor() và kích thước đích của chúng tôi và được lưu trữ trong $dst_img. Bây giờ đến phần quan trọng. imagecopyresized() có khá nhiều biến và bạn thực sự không cần phải ghi nhớ chúng. Chúng theo thứ tự là hình ảnh để sao chép vào, hình ảnh để sao chép từ, tọa độ đích X, tọa độ đích Y, tọa độ nguồn X, tọa độ nguồn Y, chiều rộng đích, chiều cao đích, nguồn . Các tham số từ ba đến sáu, tọa độ, cho phép bạn sao chép các vùng của ảnh trái ngược với toàn bộ ảnh - PHP sẽ sao chép từ tọa độ đã chỉ định đến cuối ảnh, vì vậy bằng cách chuyển vào 0 chúng tôi đang sử dụng . Bạn có thể sẽ không bao giờ muốn sao chép các vùng sử dụng các tham số này, vì vậy hãy để chúng là 0

Chụp ảnh màn hình trang web bạn chọn và lưu dưới dạng phức tạp. png trong cùng thư mục với tập lệnh PHP của bạn, sau đó tải lên các hiệu ứng đặc biệt. php trong trình duyệt của bạn. Tất cả đều ổn, bạn sẽ thấy rằng hình ảnh trang web đã được thu nhỏ lại, nhưng kết quả là tất cả văn bản đều khó đọc nếu không muốn nói là không thể đọc được

Bây giờ, để cho bạn biết tại sao imagecopyresampled() lại tốt hơn, hãy thay đổi lệnh gọi imagecopyresized() thành imagecopyresampled(). Danh sách tham số giống hệt nhau, vì vậy chỉ cần thay đổi tên chức năng. Lần này bạn sẽ thấy một sự khác biệt rõ rệt - trang web vẫn nhỏ hơn nhưng phải hoàn toàn dễ đọc vì văn bản phải được làm mịn đẹp mắt

Hiệu ứng đặc biệt cuối cùng mà chúng ta sẽ xem xét là imagerotate(), như bạn có thể đoán, nó sẽ xoay một hình ảnh. Điều này dễ thực hiện hơn nhiều so với thay đổi kích thước và lấy mẫu lại, vì nó chỉ có ba tham số. hình ảnh cần xoay và số độ ngược chiều kim đồng hồ bạn muốn xoay hình ảnh đó và màu sắc sẽ sử dụng ở bất kỳ nơi nào không gian được khám phá. Việc xoay được thực hiện từ trung tâm của hình ảnh nguồn và hình ảnh đích sẽ tự động được định cỡ để phù hợp với toàn bộ hình ảnh được xoay

Tham số cuối cùng chỉ thực sự có ý nghĩa khi bạn đã thấy nó hoạt động, vì vậy hãy thử tập lệnh này


Bạn sẽ cần đặt tệp của riêng mình vào nơi tôi đã sử dụng nút. png, nhưng nếu không thì nó phải đơn giản

Ảnh đã được xoay 50 độ, khử răng cưa để tránh răng cưa, thay đổi kích thước tối thiểu để ảnh xuất ra có không gian vừa đủ để chứa ảnh đã xoay. Cuối cùng, lưu ý rằng các khoảng trống trong hình ảnh, thực tế là "nền", đã được tô màu hồng đậm mà chúng tôi đã xác định. Màu trắng thường được ưa chuộng hơn, nhưng nó sẽ không quá rõ ràng trong ảnh chụp màn hình

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

Làm cách nào để tự động xoay hình ảnh trong PHP?

imagerotate() là một hàm có sẵn trong PHP được sử dụng để xoay hình ảnh với một góc cho trước theo độ.

Các lệnh xoay hình ảnh là gì?

Xoay hình ảnh trong 2 bước. .
Với hình ảnh của bạn đang mở trong Photoshop, hãy vào Image > Image Rotation
Chọn từ các tùy chọn xoay ảnh — 90 độ theo chiều kim đồng hồ, 90 độ ngược chiều kim đồng hồ hoặc 180 độ

Bạn có thể xoay hình ảnh trong Java không?

Cách đơn giản nhất để xoay hình ảnh trong Java là sử dụng lớp AffineTransformOp . Bạn có thể tải một hình ảnh vào Java dưới dạng BufferedImage và sau đó áp dụng thao tác xoay để tạo một BufferedImage mới. Bạn có thể sử dụng ImageIO của Java hoặc thư viện hình ảnh của bên thứ ba như JDeli để tải và lưu hình ảnh.