मैं PHP के साथ एक छवि घूर्णन और क्रॉप कर रहा हूं, लेकिन मुझे काला सीमा दिखाई दे रही है, मुझे पता है कि आप पृष्ठभूमि रंग बदल सकते हैं, लेकिन मैं पूरी छवि को भरने के लिए छवि को घूमना और फसल करना चाहता हूं। मूल रूप से कुछ (दाएं) बनाम सीएसएस में background-size: cover;
(बाएं) के समान कुछ।घुमाएं और फसल
नीचे दी गई छवि देखें, ठीक वही है जो मुझे मिला है, बाएं मैं प्राप्त करना चाहता हूं। घुमाने के लिए डिग्री की संख्या गतिशील है और छवि का उत्पादन किया जाना चाहिए और स्रोत-छवि दोनों वर्ग (200x200) हैं।
संपादित करें: यहाँ मेरी त्वरित और गंदी कोड है:
$degrees = rand(1,360);
$square_image = imagerotate($square_image, $degrees, 0);
imagejpeg($square_image,NULL,100);
इस के साथ
:
$rotate = imagecreatefromjpeg($image);
// part of code created by www.thewebhelp.com, modified
$square_size = 200;
$original_width = imagesx($rotate);
$original_height = imagesy($rotate);
if($original_width > $original_height){
$new_height = $square_size;
$new_width = $new_height*($original_width/$original_height);
}
if($original_height > $original_width){
$new_width = $square_size;
$new_height = $new_width*($original_height/$original_width);
}
if($original_height == $original_width){
$new_width = $square_size;
$new_height = $square_size;
}
$new_width = round($new_width);
$new_height = round($new_height);
$smaller_image = imagecreatetruecolor($new_width, $new_height);
$square_image = imagecreatetruecolor($square_size, $square_size);
imagecopyresampled($smaller_image, $rotate, 0, 0, 0, 0, $new_width, $new_height, $original_width, $original_height);
if($new_width>$new_height){
$difference = $new_width-$new_height;
$half_difference = round($difference/2);
imagecopyresampled($square_image, $smaller_image, 0-$half_difference+1, 0, 0, 0, $square_size+$difference, $square_size, $new_width, $new_height);
}
if($new_height>$new_width){
$difference = $new_height-$new_width;
$half_difference = round($difference/2);
imagecopyresampled($square_image, $smaller_image, 0, 0-$half_difference+1, 0, 0, $square_size, $square_size+$difference, $new_width, $new_height);
}
if($new_height == $new_width){
imagecopyresampled($square_image, $smaller_image, 0, 0, 0, 0, $square_size, $square_size, $new_width, $new_height);
}
$degrees = rand(1,360);
$square_image = imagerotate($square_image, $degrees, 0);
imagejpeg($square_image,NULL,100);
अपना कोड दिखाएं। – sachleen
मुझे लगता है कि आपकी 'पृष्ठभूमि-आकार' समानता आपके लिए आवश्यकतानुसार नहीं मिलती है। – Ejaz
http://stackoverflow.com/a/22511805/2106820 –