[英]php GD image quality is poor
我正在從現有的png生成一個簡單的圖像並向其添加文本。 但質量非常差,結果是鋸齒狀的,請看這里 。 結果不一定是超高質量,只是比它更好一點。 我一定做錯了,因為這很糟糕。 任何建議都會很棒。
非常感謝你,
托德
// customizable variables
$common_font_file = 'fonts/giddyup.ttf';
$latin_font_file = 'fonts/comic-sans-ms.ttf';
$font_color = '#000000' ;
$image_file = 'images/oval_template_large.png';
$mime_type = 'image/png' ;
$extension = '.png' ;
$s_end_buffer_size = 4096 ;
$common_name = html_entity_decode($_POST["Cname"]);
$latin_name = html_entity_decode($_POST["Lname"]);
$common_left_indent = html_entity_decode($_POST["cleftIndent"]);
$latin_left_indent = html_entity_decode($_POST["lleftIndent"]);
$common_top_indent = html_entity_decode($_POST["ctopIndent"]);
$latin_top_indent = html_entity_decode($_POST["ltopIndent"]);
$common_font_size = html_entity_decode($_POST["cFontSize"])* 72 / 96;
$latin_font_size = html_entity_decode($_POST["lFontSize"])* 72 / 96;
$font_rgb = hex_to_rgb($font_color) ;
// create and measure the common text
$common_box = @ImageTTFBBox($common_font_size,0,$common_font_file,$common_name) ;
$common_text_width = abs($common_box[2]-$common_box[0]);
$common_text_height = abs($common_box[5]-$common_box[3]);
// create and measure the latin text
$latin_box = @ImageTTFBBox($latin_font_size,0,$latin_font_file,$latin_name) ;
$latin_text_width = abs($latin_box[2]-$latin_box[0]);
$latin_text_height = abs($latin_box[5]-$latin_box[3]);
$image = imagecreatefrompng($image_file);
if(!$image || (!$common_box && !$latin_box))
{
fatal_error('Error: The server could not create this image.') ;
}
// allocate colors and measure final text position
$font_color = ImageColorAllocate($image,$font_rgb['red'],$font_rgb['green'],$font_rgb['blue']);
$image_width = imagesx($image);
$put_common_text_x = $common_left_indent;
$put_common_text_y = $common_top_indent + $common_text_height;
$put_latin_text_x = $latin_left_indent;
$put_latin_text_y = $latin_text_height + $latin_top_indent ;
// Write the text
imagettftext($image, $common_font_size, 0, $put_common_text_x, $put_common_text_y, $font_color, $common_font_file, $common_name);
// Write the text
imagettftext($image, $latin_font_size, 0, $put_latin_text_x, $put_latin_text_y, $font_color, $latin_font_file, $latin_name);
header('Content-type: ' . $mime_type) ;
ImagePNG($image) ;
ImageDestroy($image) ;
exit ;
GD的文本功能不會消除他們正在繪制的文本。 最簡單的方法是將圖像生成至少比最終產品大2倍或4倍,並稍后調整大小,這將作為調整大小的副作用進行一些調整。
也許您需要增加原始的“橢圓”圖像,在此圖像上渲染.ttf並在輸出上渲染較小的版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.