PHP를 사용하여 압축과 함께 PNG를 JPG로 변환하시겠습니까?
저는 고품질 PNG 파일을 많이 가지고 있습니다.품질은 유지하면서 파일 크기는 작아져서 PHP를 이용해서 JPG로 변환하고 싶습니다.웹에 JPG 파일을 표시하고 싶습니다.
PHP에 이를 위한 기능/라이브러리가 있습니까?품질/압축 상태가 양호합니까?
흰색의 투명도를 가진 PNG를 JPG로 안전하게 변환하려면 이 작업을 수행합니다.
$image = imagecreatefrompng($filePath);
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);
$quality = 50; // 0 = worst / smaller file, 100 = better / bigger file
imagejpeg($bg, $filePath . ".jpg", $quality);
imagedestroy($bg);
당신이 변환하고 싶은 것을 조심하세요.JPG는 알파-투명성을 지원하지 않는 반면 PNG는 지원합니다.당신은 그 정보를 잃게 될 것입니다.
변환하려면 다음 기능을 사용할 수 있습니다.
// Quality is a number between 0 (best compression) and 100 (best quality)
function png2jpg($originalFile, $outputFile, $quality) {
$image = imagecreatefrompng($originalFile);
imagejpeg($image, $outputFile, $quality);
imagedestroy($image);
}
이 함수는 및 GD 라이브러리의 함수를 사용합니다.
이미지를 변환하는 작은 예입니다.png'에서 70% 화질의 'image. jpg'로 이동합니다.
<?php
$image = imagecreatefrompng('image.png');
imagejpeg($image, 'image.jpg', 70);
imagedestroy($image);
?>
도움이 되기를 바랍니다.
<?php
function createThumbnail($imageDirectory, $imageName, $thumbDirectory, $thumbWidth) {
$explode = explode(".", $imageName);
$filetype = $explode[1];
if ($filetype == 'jpg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
$srcImg = imagecreatefromjpeg("$imageDirectory/$imageName");
} else
if ($filetype == 'png') {
$srcImg = imagecreatefrompng("$imageDirectory/$imageName");
} else
if ($filetype == 'gif') {
$srcImg = imagecreatefromgif("$imageDirectory/$imageName");
}
$origWidth = imagesx($srcImg);
$origHeight = imagesy($srcImg);
$ratio = $origWidth / $thumbWidth;
$thumbHeight = $origHeight / $ratio;
$thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);
imagecopyresized($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $origWidth, $origHeight);
if ($filetype == 'jpg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'jpeg') {
imagejpeg($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'png') {
imagepng($thumbImg, "$thumbDirectory/$imageName");
} else
if ($filetype == 'gif') {
imagegif($thumbImg, "$thumbDirectory/$imageName");
}
}
?>
아주 좋은 썸네일 스크립트입니다 =) 예를 들어보겠습니다.
$path = 원본 사진이 있는 폴더의 경로입니다.$name = 썸네일로 만들 파일의 파일 이름입니다.$thumbpath = 썸네일을 저장할 디렉토리의 경로입니다.$maxwidth = PX에서 썸네일의 최대 너비(100 px).
createThumbnail($path, $name, $thumbpath, $maxwidth);
일반적으로 이미지 처리를 위한 사실상의 표준 라이브러리로 간주되는 Image Magick(이미지 매직)을 살펴볼 수 있습니다.추가 php 모듈을 설치해야 하지만 기본 설치에서 사용할 수 있는지는 확실하지 않습니다.
HTH.
PHP는 와 기능과 함께 일부 이미지 처리 기능이 있습니다.첫 번째는 PNG 이미지 파일의 내부 표현을 생성하고 두 번째는 해당 표현을 JPEG 이미지 파일로 저장하는 데 사용합니다.
이 php 이미지 라이브러리 목록을 참조하십시오.기본적으로 GD나 Imagemagick입니다.
OP에 대한 정확한 답변은 아니지만 이미 답변이 나왔으니...
꼭 PHP로 해야 합니까?
제 말은: 많은 이미지를 변환해야 하는 경우 PHP로 변환하는 것이 최선의 방법이 아닐 수도 있습니다. 그러면 다음과 같은 문제가 발생합니다.memory_limit,max_execution_time, ...
또한 GD가 최고의 품질/크기 비율을 제공하지 못할 수도 있다고 말하고 싶지만 확실하지 않습니다. (GD와 다른 솔루션을 비교해보면 결과에 큰 관심이 있습니다;-)
PHP를 사용하지 않는 또 다른 방법은 명령줄을 통해 Image Magick을 사용하는 것입니다(다른 사람들이 제안한 것처럼 PHP 확장자가 아닌).
당신은 모든 것들을 관통하는 셸 스크립트를 작성해야 할 것입니다..png파일, 파일을 둘 중 하나에게 줍니다.
convert새로운 것을 만들다.jpg줄을 대다.png파일- 원본 파일을 직접 작업하고 덮어쓸 수도 있습니다.
참고 사항: 프로덕션 서버에서 직접 이 작업을 수행하는 경우 변환 일괄 처리 사이에 약간의 수면 시간을 두고 가끔 냉각할 수 있습니다. ^^
쉘스크립트를 사용해봤어요.convert/mogrify몇 번 (한 번 10시간 정도) 뛰게 하고, 일을 정말 잘 해냅니다 :-)
언급URL : https://stackoverflow.com/questions/1201798/use-php-to-convert-png-to-jpg-with-compression
'programing' 카테고리의 다른 글
| 자바스크립트에서 Typed Arrays의 장점은 C에서 작동하는 것과 같거나 비슷하다는 것입니까? (0) | 2023.11.04 |
|---|---|
| JQuery를 사용하여 특정 자식 요소가 없는 요소를 선택하는 방법 (0) | 2023.11.04 |
| ELSIF V/S가 오라클에 있는 경우 (0) | 2023.11.04 |
| slave pty의 최종 출력은 부모에서 닫히지 않은 경우 손실됩니다. 왜죠? (0) | 2023.11.04 |
| 템플릿 드롭다운에 표시되지 않는 새 템플릿 (0) | 2023.11.04 |