merhabalar.
php file upload kullanıyorum.
.gif .png .jpeg gibi resimler yüklüyorum.
yüklenen resimlerden önce file upload resimi kontrol edip webp çevirip boyutunu kücültecek.
bunu ücretiyle yapabilcek var mi?
önemli olan tek tıkla halledilmeli file uploaddan resimi seçip yükle dedikten sonra yukardaki işlemler gerçekleşmeli
php ile bu yapılır mı?
13
●506
- 28-12-2023, 03:22:34Edit: kendi kodunuzu gösterirseniz daha spesifik bir çözüm sunabilirim.
function handleImageUpload($uploadedFile) {
$allowedExtensions = ['gif', 'png', 'jpeg'];
$uploadPath = '/your/upload/directory/';
$originalFileName = $uploadedFile['name'];
$extension = pathinfo($originalFileName, PATHINFO_EXTENSION);
// WebP kontrolü
if ($extension === 'webp') {
// Eğer webp ise ek bir işlem yapma
return;
}
// Desteklenen dosya uzantılarını kontrol et
if (!in_array(strtolower($extension), $allowedExtensions)) {
echo 'Geçersiz dosya uzantısı. Lütfen gif, png veya jpeg dosyası yükleyin.';
return;
}
// Yüklenen dosyayı geçici bir klasöre taşı
$tempFilePath = $_FILES['file']['tmp_name'];
$tempFileName = uniqid('uploaded_', true) . '.' . $extension;
$tempDestination = $uploadPath . $tempFileName;
// Dosyayı webp'ye çevir ve boyutunu küçült
// Bu kısmı kendi ihtiyaçlarınıza göre özelleştirmeniz gerekebilir
$convertedFilePath = convertAndResizeToWebP($tempFilePath, $tempDestination);
// Eğer dönüştürme başarılıysa orijinal dosyayı sil
if ($convertedFilePath) {
unlink($tempFilePath);
}
}
function convertAndResizeToWebP($sourceFilePath, $destinationFilePath) {
// Dönüştürme ve boyut küçültme işlemlerini burada gerçekleştirin
// Örnek olarak, GD veya Imagick kullanabilirsiniz
// İşlem başarılıysa dönüştürülmüş dosyanın yolu, hata olursa false döndürün
// Örneğin:
// if (conversionAndResizeSuccessful) {
// return $destinationFilePath;
// } else
{
// return false;
// }
} - 28-12-2023, 03:27:40Üyeliği durdurulduçok teşekkür ederim hocam benim kodum bu şekildelookout adlı üyeden alıntı: mesajı görüntüle
if ($_FILES['ayar_reklam1']['size'] > 3145728) { echo "Bu dosya boyutu çok büyük"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } $izinli_uzantilar = array('jpg', 'gif', 'png', 'ico', 'webp'); $uploads_dir = '../../dimg'; $tmp_name = $_FILES['ayar_reklam1']['tmp_name']; $name = $_FILES['ayar_reklam1']['name']; // Dosya uzantısını doğrula $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION)); if (!in_array($ext, $izinli_uzantilar) && !empty($name)) { echo "Bu uzantı kabul edilmiyor"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } // Dosya içeriğini kontrol et if (!empty($tmp_name)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $tmp_name); if (!$mime_type || !in_array($mime_type, array('image/jpeg', 'image/gif', 'image/png', 'image/x-icon', 'image/webp'))) { echo "Geçersiz dosya türü"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } finfo_close($finfo); } // Güvenli dosya adı oluştur $benzersizsayi4 = rand(20000, 32000); $refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . $name; $bos = "0"; $target_path = "$uploads_dir/$benzersizsayi4$name"; // Dosyayı yükle if (!empty($tmp_name)) { if (!move_uploaded_file($tmp_name, $target_path)) { echo "Dosya yükleme hatası"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } } if (empty($name)) { $_SESSION['reklam'] = "ok"; Header("Location: ../reklam-ayar.php"); } else { $resimsilunlink = $db->query("SELECT ayar_reklam1 FROM ayar WHERE ayar_id=0")->fetch(PDO::FETCH_ASSOC); if ($resimsilunlink['ayar_reklam1'] && !empty($tmp_name)) { // Silme işlemi gerçekleştirme unlink("../../" . $resimsilunlink['ayar_reklam1']); } $duzenle = $db->prepare("UPDATE ayar SET ayar_reklam1=:reklam WHERE ayar_id=0"); $duzenle->bindParam(':reklam', $refimgyol); $update = $duzenle->execute(); if ($update) { $_SESSION['reklam'] = "ok"; Header("Location: ../reklam-ayar.php"); } else { $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); } } - 28-12-2023, 03:29:03Direkt olarak bu hazır paketi kullanabilirsiniz composer aracılığı ile https://github.com/rosell-dk/webp-convert en sağlıklısı bu şekilde kullanmak olacaktır.
- 28-12-2023, 03:52:03sunucunun php ayarlarından imagick i aktif edip aşağıdaki kod bloğunu kullanarak yapabilirsiniz.
<?php if ($_FILES['ayar_reklam1']['size'] > 3145728) { echo "Bu dosya boyutu çok büyük"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } $izinli_uzantilar = array('jpg', 'gif', 'png', 'ico', 'webp'); $uploads_dir = '../../dimg'; $tmp_name = $_FILES['ayar_reklam1']['tmp_name']; $name = $_FILES['ayar_reklam1']['name']; // Dosya uzantısını doğrula $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION)); if (!in_array($ext, $izinli_uzantilar) && !empty($name)) { echo "Bu uzantı kabul edilmiyor"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } // Dosya içeriğini kontrol et if (!empty($tmp_name)) { $finfo = finfo_open(FILEINFO_MIME_TYPE); $mime_type = finfo_file($finfo, $tmp_name); if (!$mime_type || !in_array($mime_type, array('image/jpeg', 'image/gif', 'image/png', 'image/x-icon', 'image/webp'))) { echo "Geçersiz dosya türü"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } finfo_close($finfo); } // Güvenli dosya adı oluştur $benzersizsayi4 = rand(20000, 32000); $refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . $name; $bos = "0"; $target_path = "$uploads_dir/$benzersizsayi4$name"; // Dosyayı yükle if (!empty($tmp_name)) { if (!move_uploaded_file($tmp_name, $target_path)) { echo "Dosya yükleme hatası"; $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); exit; } } // Resmi WebP'ye dönüştür if (extension_loaded('imagick')) { $imagick = new \Imagick($target_path); $imagick->setImageFormat('webp'); $webpPath = "$uploads_dir/$benzersizsayi4" . pathinfo($name, PATHINFO_FILENAME) . ".webp"; $imagick->writeImage($webpPath); $imagick->clear(); $imagick->destroy(); // WebP formatında dosya yolu güncelle $refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . pathinfo($name, PATHINFO_FILENAME) . ".webp"; // Orjinal dosyayı sil unlink($target_path); } // Diğer işlemler devam eder... if (empty($name)) { $_SESSION['reklam'] = "ok"; Header("Location: ../reklam-ayar.php"); } else { $resimsilunlink = $db->query("SELECT ayar_reklam1 FROM ayar WHERE ayar_id=0")->fetch(PDO::FETCH_ASSOC); if ($resimsilunlink['ayar_reklam1'] && !empty($tmp_name)) { // Silme işlemi gerçekleştirme unlink("../../" . $resimsilunlink['ayar_reklam1']); } $duzenle = $db->prepare("UPDATE ayar SET ayar_reklam1=:reklam WHERE ayar_id=0"); $duzenle->bindParam(':reklam', $refimgyol); $update = $duzenle->execute(); if ($update) { $_SESSION['reklam'] = "ok"; Header("Location: ../reklam-ayar.php"); } else { $_SESSION['reklam'] = "no"; Header("Location: ../reklam-ayar.php"); } } ?> - 28-12-2023, 03:55:32Bunlara gerek yok. Direk php upload class ile bunu yapabilirsin. Hem daha kolay hem de bir çok method mevcut. Otomatik webpye çevirebilirsin.
https://github.com/verot/class.upload.php - 28-12-2023, 03:56:04Üyeliği durdurulduhocam çok teşekkür ederim çalıştı.arsgunners86 adlı üyeden alıntı: mesajı görüntüle
birkaç sorum olucak müsadenizle
resim gözükmeyecek hale geldi
bunu biraz optime edebilir miyiz acaba

- 28-12-2023, 04:00:03@yusuftepe; bu şekilde deneyebilirsin
// Resmi WebP'ye dönüştür if (extension_loaded('imagick')) { $imagick = new \Imagick($target_path); // Webp için sıkıştırma kalitesini ayarla $imagick->setImageCompressionQuality(80); // Kaliteyi burada ayarlayabilirsiniz $imagick->setImageFormat('webp'); $webpPath = "$uploads_dir/$benzersizsayi4" . pathinfo($name, PATHINFO_FILENAME) . ".webp"; $imagick->writeImage($webpPath); $imagick->clear(); $imagick->destroy(); // WebP formatında dosya yolu güncelle $refimgyol = substr($uploads_dir, 6) . "/" . $benzersizsayi4 . pathinfo($name, PATHINFO_FILENAME) . ".webp"; // Orjinal dosyayı sil unlink($target_path); } - 28-12-2023, 04:03:38$imagick->setImageCompression(Imagick::COMPRESSION_WEBP);yusuftepe adlı üyeden alıntı: mesajı görüntüle
$imagick->setImageCompressionQuality(90);
bunu ekleyin kaliteyi yükseltir.

