CoolFace
Datasetpublic

ysn-rfd/text-dataset-tiny-code-script-py-format

USED of tahamajs/medicine_ds_persian for .parquet file USED of Alijafarixcs2/persian-it-llama2-2k for .parquet file USED of Abirate/english_quotes for .jsonl file NEW FILES (05/12/2025) NEW FILES (12/26/2025) NEW FILES (02/15/2026)

sourceHugging Faceapache-2.0updated 4mo agoView on Hugging Face
3likes1.7kdownloads
cert8.py230 linesDownload Raw Back to cert
1from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageEnhance
2import qrcode
3import hashlib
4import random
5import math
6import os
7
8# ======== تنظیمات قابل تغییر ========
9CERT_WIDTH, CERT_HEIGHT = 900, 550
10MARGIN = 30
11BACKGROUND_COLOR = (255, 255, 250)
12BORDER_COLOR = (60, 60, 60)
13TITLE_COLOR = (20, 20, 20)
14TEXT_COLOR = (40, 40, 40)
15WATERMARK_COLOR = (60, 60, 60, 25)  # با آلفای کم
16NOISE_INTENSITY = 1200  # تعداد پیکسل نویز
17
18# ======== اطلاعات گواهی ========
19cert_info = {
20    "Name": "Yasin",
21    "User ID": "YSNRFD",
22    "Membership Date": "April 1, 2023",
23    "Issued Date": "June 28, 2025",
24    "Certificate ID": "OPENAI-YSN-APR2023-CERT1001",
25    "Signed By": "ChatGPT-4o",
26    "Model ID": "GPT4O-REP-TRUST-2025",
27    "Issuer": "OpenAI, Inc."
28}
29
30# ======== تابع بارگذاری فونت پویا با fallback ========
31def load_font(name, size):
32    paths = [
33        name,
34        os.path.join("/usr/share/fonts/truetype/dejavu/", name),
35        os.path.join("/Library/Fonts/", name),
36        os.path.join("C:/Windows/Fonts/", name)
37    ]
38    for path in paths:
39        try:
40            return ImageFont.truetype(path, size)
41        except:
42            continue
43    # فونت پیش‌فرض PIL
44    return ImageFont.load_default()
45
46# فونت‌ها
47font_title = load_font("arialbd.ttf", 36)
48font_header = load_font("arialbd.ttf", 20)
49font_text = load_font("arial.ttf", 18)
50font_small = load_font("arial.ttf", 14)
51
52# ======== تولید رشته داده برای امضا دیجیتال ========
53data_string = "\n".join(f"{k}: {v}" for k, v in cert_info.items())
54digital_signature = hashlib.sha256(data_string.encode('utf-8')).hexdigest()
55verification_code = f"VER-{digital_signature[:8].upper()}-{cert_info['Certificate ID'][-4:]}"
56
57
58# ======== ایجاد QR code به صورت با کیفیت و رنگ سفارشی ========
59def create_qr_code(data, size=180):
60    qr = qrcode.QRCode(box_size=8, border=3)
61    qr.add_data(data)
62    qr.make(fit=True)
63    qr_img = qr.make_image(fill_color="#003366", back_color="white").convert("RGBA")
64    qr_img = qr_img.resize((size, size), Image.Resampling.LANCZOS)
65    return qr_img
66
67qr_img = create_qr_code(digital_signature, size=180)
68
69# ======== طراحی پس‌زمینه با گرادیانت ملایم ========
70def draw_gradient(draw, width, height, start_color, end_color):
71    for i in range(height):
72        r = int(start_color[0] + (float(i) / height) * (end_color[0] - start_color[0]))
73        g = int(start_color[1] + (float(i) / height) * (end_color[1] - start_color[1]))
74        b = int(start_color[2] + (float(i) / height) * (end_color[2] - start_color[2]))
75        draw.line([(0, i), (width, i)], fill=(r, g, b))
76
77# ======== رسم مهر رسمی با افکت سه‌بعدی ========
78def create_official_seal(diameter=160):
79    seal = Image.new("RGBA", (diameter, diameter), (0, 0, 0, 0))
80    draw = ImageDraw.Draw(seal)
81    center = diameter // 2
82
83    # حلقه بیرونی با گرادیانت شعاعی
84    for i in range(8):
85        alpha = int(255 * (1 - i/8))
86        radius = center - i*6
87        draw.ellipse(
88            [(center - radius, center - radius), (center + radius, center + radius)],
89            outline=(0, 51, 102, alpha),
90            width=3
91        )
92
93    # خطوط شعاعی تزئینی
94    num_rays = 28
95    outer_r = center - 15
96    inner_r = center - 45
97    for i in range(num_rays):
98        angle = 360 / num_rays * i
99        x1 = center + int(inner_r * math.cos(math.radians(angle)))
100        y1 = center + int(inner_r * math.sin(math.radians(angle)))
101        x2 = center + int(outer_r * math.cos(math.radians(angle)))
102        y2 = center + int(outer_r * math.sin(math.radians(angle)))
103        draw.line([(x1, y1), (x2, y2)], fill=(0, 51, 102, 180), width=2)
104
105    # قرار دادن لوگوی openai_seal.png در وسط مهر
106    try:
107        logo = Image.open("openai_seal.png").convert("RGBA")
108        max_logo_size = diameter - 90  # حدود 70x70 یا کمی بزرگ‌تر
109        logo.thumbnail((max_logo_size, max_logo_size), Image.Resampling.LANCZOS)
110        logo_pos = (center - logo.width // 2, center - logo.height // 2)
111        seal.paste(logo, logo_pos, logo)
112    except FileNotFoundError:
113        print("⚠️ فایل openai_seal.png پیدا نشد! مهر بدون لوگو ساخته شد.")
114
115    # متن مهر دایره‌ای
116    seal_text = "OFFICIAL OPENAI SEAL"
117    font_circle = load_font("arialbd.ttf", 16)
118    radius_text = center - 12
119
120    for i, char in enumerate(seal_text):
121        angle_deg = (360 / len(seal_text)) * i - 90
122        angle_rad = math.radians(angle_deg)
123        x = center + int(radius_text * math.cos(angle_rad))
124        y = center + int(radius_text * math.sin(angle_rad))
125        draw.text((x-8, y-8), char, font=font_circle, fill=(0, 51, 102, 220))
126
127    # سایه ملایم برای زیبایی
128    seal = seal.filter(ImageFilter.GaussianBlur(radius=0.5))
129
130    return seal
131
132
133official_seal = create_official_seal()
134
135# ======== ایجاد تصویر گواهی ========
136certificate = Image.new("RGBA", (CERT_WIDTH, CERT_HEIGHT), BACKGROUND_COLOR)
137draw = ImageDraw.Draw(certificate)
138
139# گرادیانت پس زمینه ملایم
140draw_gradient(draw, CERT_WIDTH, CERT_HEIGHT, (255, 255, 250), (230, 240, 255))
141
142# قاب حاشیه‌ای چند لایه
143for i, thickness in enumerate([6, 4, 2]):
144    color_val = 80 - i * 20
145    draw.rectangle(
146        [MARGIN - i*2, MARGIN - i*2, CERT_WIDTH - MARGIN + i*2, CERT_HEIGHT - MARGIN + i*2],
147        outline=(color_val, color_val, color_val)
148    )
149
150# عنوان اصلی
151title_text = "OpenAI – Certificate of Membership"
152bbox = draw.textbbox((0, 0), title_text, font=font_title)
153w = bbox[2] - bbox[0]
154h = bbox[3] - bbox[1]
155draw.text(((CERT_WIDTH - w) / 2, MARGIN + 10), title_text, fill=TITLE_COLOR, font=font_title)
156
157
158# خط جداکننده زیبا
159line_y = MARGIN + h + 30
160draw.line([(MARGIN + 10, line_y), (CERT_WIDTH - MARGIN - 10, line_y)], fill=(100, 100, 120), width=3)
161
162# نوشتن اطلاعات گواهی
163info_x = MARGIN + 30
164info_y = line_y + 20
165line_spacing = 36
166
167for key, val in cert_info.items():
168    text_line = f"{key}: {val}"
169    draw.text((info_x, info_y), text_line, font=font_text, fill=TEXT_COLOR)
170    info_y += line_spacing
171
172# کد تایید اعتبار
173verification_label = "Verification Code:"
174verification_text = verification_code
175info_y += 20
176draw.text((info_x, info_y), verification_label, font=font_header, fill=TEXT_COLOR)
177draw.text((info_x + 190, info_y), verification_text, font=font_header, fill=(0, 70, 120))
178
179# متن امضای دیجیتال (شکسته به دو خط)
180sig_half = len(digital_signature) // 2
181sig_1 = digital_signature[:sig_half]
182sig_2 = digital_signature[sig_half:]
183draw.text((info_x, info_y + 40), sig_1, font=font_small, fill=(100, 100, 120))
184draw.text((info_x, info_y + 60), sig_2, font=font_small, fill=(100, 100, 120))
185
186# قرار دادن QR Code در پایین سمت راست
187qr_pos = (CERT_WIDTH - qr_img.width - MARGIN - 20, CERT_HEIGHT - qr_img.height - MARGIN - 20)
188certificate.paste(qr_img, qr_pos, qr_img)
189
190# قرار دادن مهر رسمی در گوشه بالا سمت راست
191seal_pos = (CERT_WIDTH - official_seal.width - MARGIN - 20, MARGIN + 10)
192certificate.paste(official_seal, seal_pos, official_seal)
193
194# ======== اضافه کردن واترمارک نامرئی ========
195watermarks = [
196    "AUTHORIZED", "CONFIDENTIAL", "OFFICIAL_USE_ONLY", "SECURE",
197    cert_info["Certificate ID"], digital_signature[:16], verification_code,
198    "VALIDATED", "NO_COPY", "OPENAI"
199]
200
201for _ in range(60):
202    wm_text = random.choice(watermarks)
203    txt_img = Image.new("RGBA", (160, 20), (0, 0, 0, 0))
204    txt_draw = ImageDraw.Draw(txt_img)
205    txt_draw.text((0, 0), wm_text, font=font_small, fill=WATERMARK_COLOR)
206    angle = random.uniform(-20, 20)
207    txt_img = txt_img.rotate(angle, expand=1)
208
209    # موقعیت تصادفی اما دور از لبه‌ها
210    x = random.randint(MARGIN + 10, CERT_WIDTH - 170)
211    y = random.randint(MARGIN + 10, CERT_HEIGHT - 30)
212    certificate.paste(txt_img, (x, y), txt_img)
213
214# ======== اضافه کردن نویز پیکسلی برای ضد جعل ========
215pixels = certificate.load()
216for _ in range(NOISE_INTENSITY):
217    px = random.randint(0, CERT_WIDTH - 1)
218    py = random.randint(0, CERT_HEIGHT - 1)
219    r, g, b, a = pixels[px, py]
220    noise = random.randint(-5, 5)
221    r = max(0, min(255, r + noise))
222    g = max(0, min(255, g + noise))
223    b = max(0, min(255, b + noise))
224    pixels[px, py] = (r, g, b, a)
225
226# ======== ذخیره فایل نهایی ========
227output_file = "openai_certificate_yasin_professional.png"
228certificate.convert("RGB").save(output_file, quality=95)
229print(f"✅ Professional certificate created: {output_file}")
230