Compare commits
79 Commits
2701dfbf85
...
v3
| Author | SHA1 | Date | |
|---|---|---|---|
| 9cf0792866 | |||
| 719e227ba4 | |||
| ace45b1cc9 | |||
| 0bd47658e9 | |||
| 97a592b0c9 | |||
| 4bbbb0334c | |||
| 27d5fb26d9 | |||
| 5119d4bb31 | |||
| acaf537f11 | |||
| 55ff314163 | |||
| 376b8c54a6 | |||
| 1a048a0e07 | |||
| 77fc5920a2 | |||
| 78d48db9ea | |||
| 92e3a3f0f9 | |||
| 57cb27f6cf | |||
| c24dae9694 | |||
| e0ac23a8e0 | |||
| c1a06dc44c | |||
| 72f6e0c822 | |||
| b2418d8c7e | |||
| 9cb057668b | |||
| cb2aa89b16 | |||
| ef9a9296dd | |||
| 3c4b2e148d | |||
| bf1bc84cd0 | |||
| 8e37f9e776 | |||
| 216abc8ad2 | |||
| cffa3d789b | |||
| d7ef1573e5 | |||
| e101833c7d | |||
| 6c98919c80 | |||
| cae35a266f | |||
| c57e8ab6db | |||
| 135b14adcf | |||
| 9f59e122ef | |||
| 43cc2a3caa | |||
|
|
2f2998b0fd | ||
| 788b67804e | |||
| 2bb38570f9 | |||
| aacbce2557 | |||
| 6c5085093d | |||
| 423d563cc0 | |||
| 5e79b6938c | |||
| dcd14f1021 | |||
| b4344361e4 | |||
| fcb75cb5a4 | |||
| 676f299796 | |||
| 751c77cac5 | |||
| 85b2c0b4db | |||
| 741690b30e | |||
| 7235c7ff09 | |||
| 8cba7937c3 | |||
| 4779452acd | |||
| 600df52b04 | |||
| b1b99bc887 | |||
| c7c0b3feb2 | |||
| 184f2722bf | |||
| 0f9966d224 | |||
| 43b2a9e2d5 | |||
| 3a39cb95db | |||
| 81cacd3589 | |||
| 1f521ec1d2 | |||
| 0dcf0bc930 | |||
| df4ff9171d | |||
| 1b2e63bc86 | |||
| 80bf539484 | |||
| 13bba33c26 | |||
| ecd98c72ce | |||
| 344229b77b | |||
| 9a28daa2cd | |||
| ebf8bc72aa | |||
| 2ef510358d | |||
| d492905e57 | |||
| 7a4d122976 | |||
| 8cc5138888 | |||
| 3f47b3cda4 | |||
| c1045b4878 | |||
| 70c14acaa5 |
5
.gitignore
vendored
@@ -1,2 +1,5 @@
|
||||
pos_database.db
|
||||
ScannerGO/ScannerGO-*
|
||||
ScannerGO/ScannerGO-*
|
||||
ScannerGO/config.json
|
||||
DataToolsGO/imageTools-*
|
||||
.env
|
||||
11
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Build SekiPOS (F5)",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "build-sekipos"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"python-envs.defaultEnvManager": "ms-python.python:pyenv"
|
||||
}
|
||||
15
.vscode/tasks.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "build-sekipos",
|
||||
"type": "shell",
|
||||
"command": "docker build -t sekipos:latest .",
|
||||
"group": "build",
|
||||
"presentation": {
|
||||
"reveal": "always",
|
||||
"panel": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
42
DataToolsGO/build.sh
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define binary names
|
||||
LINUX_BIN="imageTools-linux"
|
||||
LINUX_ARM_BIN="imageTools-linuxARMv7"
|
||||
WINDOWS_BIN="imageTools-windows.exe"
|
||||
|
||||
echo "Starting build process..."
|
||||
|
||||
# Build for Linux (64-bit)
|
||||
echo "Building for Linux..."
|
||||
GOOS=linux GOARCH=amd64 go build -o "$LINUX_BIN" main.go
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully built: $LINUX_BIN"
|
||||
else
|
||||
echo "Failed to build Linux binary"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build for Windows (64-bit)
|
||||
echo "Building for Windows..."
|
||||
GOOS=windows GOARCH=amd64 go build -o "$WINDOWS_BIN" main.go
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully built: $WINDOWS_BIN"
|
||||
else
|
||||
echo "Failed to build Windows binary"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build for Linux ARM (ARMv7)
|
||||
echo "Building for Linux ARMv7..."
|
||||
GOOS=linux GOARCH=arm GOARM=7 go build -o "$LINUX_ARM_BIN" main.go
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Successfully built: $LINUX_ARM_BIN"
|
||||
else
|
||||
echo "Failed to build Linux ARMv7 binary"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Build complete."
|
||||
5
DataToolsGO/go.mod
Normal file
@@ -0,0 +1,5 @@
|
||||
module dataTools
|
||||
|
||||
go 1.25.7
|
||||
|
||||
require github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||
2
DataToolsGO/go.sum
Normal file
@@ -0,0 +1,2 @@
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
|
||||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
|
||||
84
DataToolsGO/main.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"image"
|
||||
"image/jpeg"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/nfnt/resize"
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Command line arguments
|
||||
dirPath := flag.String("dir", "./", "Directory containing images")
|
||||
maxWidth := flag.Uint("width", 1000, "Maximum width for resizing")
|
||||
quality := flag.Int("quality", 75, "JPEG quality (1-100)")
|
||||
flag.Parse()
|
||||
|
||||
files, err := os.ReadDir(*dirPath)
|
||||
if err != nil {
|
||||
fmt.Printf("Error reading directory: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Processing images in %s (Max Width: %d, Quality: %d)\n", *dirPath, *maxWidth, *quality)
|
||||
|
||||
for _, file := range files {
|
||||
if file.IsDir() {
|
||||
continue
|
||||
}
|
||||
|
||||
ext := strings.ToLower(filepath.Ext(file.Name()))
|
||||
if ext != ".jpg" && ext != ".jpeg" && ext != ".png" {
|
||||
continue
|
||||
}
|
||||
|
||||
filePath := filepath.Join(*dirPath, file.Name())
|
||||
processImage(filePath, *maxWidth, *quality)
|
||||
}
|
||||
|
||||
fmt.Println("Done. Your storage can finally breathe again.")
|
||||
}
|
||||
|
||||
func processImage(path string, maxWidth uint, quality int) {
|
||||
file, err := os.Open(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to open %s: %v\n", path, err)
|
||||
return
|
||||
}
|
||||
|
||||
img, _, err := image.Decode(file)
|
||||
file.Close()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to decode %s: %v\n", path, err)
|
||||
return
|
||||
}
|
||||
|
||||
// Only resize if original is wider than maxWidth
|
||||
bounds := img.Bounds()
|
||||
var finalImg image.Image
|
||||
if uint(bounds.Dx()) > maxWidth {
|
||||
finalImg = resize.Resize(maxWidth, 0, img, resize.Lanczos3)
|
||||
fmt.Printf("Resized and compressed: %s\n", filepath.Base(path))
|
||||
} else {
|
||||
finalImg = img
|
||||
fmt.Printf("Compressed (no resize needed): %s\n", filepath.Base(path))
|
||||
}
|
||||
|
||||
// Overwrite the original file
|
||||
out, err := os.Create(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to create output file %s: %v\n", path, err)
|
||||
return
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
err = jpeg.Encode(out, finalImg, &jpeg.Options{Quality: quality})
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to encode %s: %v\n", path, err)
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ RUN pip install --no-cache-dir -r requirements.txt
|
||||
COPY app.py .
|
||||
COPY templates/ ./templates/
|
||||
COPY static/ ./static/
|
||||
#COPY .env .
|
||||
|
||||
# Create the folder structure for the volume mounts
|
||||
RUN mkdir -p /app/static/cache
|
||||
|
||||
70
KeyGenerator/A4 Printable Grid.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import os
|
||||
from PIL import Image
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
CARD_DIR = os.path.join(os.getcwd(),'keychain_cards')
|
||||
OUTPUT_PDF = os.path.join(os.getcwd(), 'keychain_3x3_perfect.pdf')
|
||||
|
||||
# A4 at 300 DPI
|
||||
PAGE_W, PAGE_H = 2480, 3508
|
||||
COLS, ROWS = 3, 3 # 9 cards per page
|
||||
PAGE_MARGIN = 150
|
||||
|
||||
def generate_printable_pdf():
|
||||
all_files = [f for f in os.listdir(CARD_DIR) if f.endswith('.png')]
|
||||
if not all_files:
|
||||
print("❌ No cards found.")
|
||||
return
|
||||
|
||||
all_files.sort()
|
||||
|
||||
# Calculate slot size
|
||||
available_w = PAGE_W - (PAGE_MARGIN * 2)
|
||||
available_h = PAGE_H - (PAGE_MARGIN * 2)
|
||||
slot_w = available_w // COLS
|
||||
slot_h = available_h // ROWS
|
||||
|
||||
# TARGET CALCULATION (Maintain 300:450 ratio)
|
||||
# We fit to the width of the slot and let height follow
|
||||
target_w = int(slot_w * 0.9)
|
||||
target_h = int(target_w * (450 / 300)) # Maintain original 1:1.5 ratio
|
||||
|
||||
# Safety check: if height is too big for slot, scale down based on height instead
|
||||
if target_h > (slot_h * 0.9):
|
||||
target_h = int(slot_h * 0.9)
|
||||
target_w = int(target_h * (300 / 450))
|
||||
|
||||
pages = []
|
||||
current_page = Image.new('RGB', (PAGE_W, PAGE_H), 'white')
|
||||
|
||||
print(f"📄 Generating {COLS}x{ROWS} grid. {len(all_files)} cards total.")
|
||||
|
||||
for i, filename in enumerate(all_files):
|
||||
item_idx = i % (COLS * ROWS)
|
||||
|
||||
# New page logic
|
||||
if item_idx == 0 and i > 0:
|
||||
pages.append(current_page)
|
||||
current_page = Image.new('RGB', (PAGE_W, PAGE_H), 'white')
|
||||
|
||||
row = item_idx // COLS
|
||||
col = item_idx % COLS
|
||||
|
||||
img_path = os.path.join(CARD_DIR, filename)
|
||||
card_img = Image.open(img_path).convert('RGB')
|
||||
|
||||
# Resize using the aspect-ratio-safe dimensions
|
||||
card_img = card_img.resize((target_w, target_h), Image.Resampling.LANCZOS)
|
||||
|
||||
# Center in slot
|
||||
x = PAGE_MARGIN + (col * slot_w) + (slot_w - target_w) // 2
|
||||
y = PAGE_MARGIN + (row * slot_h) + (slot_h - target_h) // 2
|
||||
|
||||
current_page.paste(card_img, (x, y))
|
||||
|
||||
pages.append(current_page)
|
||||
pages[0].save(OUTPUT_PDF, save_all=True, append_images=pages[1:], resolution=300.0, quality=100)
|
||||
print(f"✅ Created {OUTPUT_PDF}. Now go print it and stop crying.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_printable_pdf()
|
||||
@@ -2,7 +2,7 @@ import pandas as pd
|
||||
import json
|
||||
import os
|
||||
|
||||
file_path = r'C:\Users\Pepitho\Desktop\SekiPOS\KeyGenerator\wea.xlsx'
|
||||
file_path = os.path.join(os.getcwd(), 'PLU+FSMA+list+v1.0.xlsx')
|
||||
sheet_name = 'Non FTL'
|
||||
new_url_base = "https://server-ifps.accurateig.com/assets/commodities/"
|
||||
|
||||
@@ -48,4 +48,4 @@ def get_one_of_each():
|
||||
print(f"✅ Success! Generated 'one_of_each.json' with {len(data_output)} unique commodities.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
get_one_of_each()
|
||||
get_one_of_each()
|
||||
|
||||
162
KeyGenerator/frutas2.json
Normal file
@@ -0,0 +1,162 @@
|
||||
[
|
||||
{
|
||||
"name": "Paltas",
|
||||
"plu": "3509",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3509-gem-avocado_1625011346.JPG"
|
||||
},
|
||||
{
|
||||
"name": "Papas",
|
||||
"plu": "3414",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3414-baking-potato-white_1635179333.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Limones",
|
||||
"plu": "3626",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3626-meyer-lemons_1460404763.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Cebollines / Cebollas",
|
||||
"plu": "4068",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4068-onions-green-2_1625063600.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Ajo",
|
||||
"plu": "4608",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4608-garlic-regular_1637184640.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Zanahorias",
|
||||
"plu": "4560",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4560-carrots-baby_1625673556.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Plátanos",
|
||||
"plu": "4235",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4235-plantains-01_1625076376.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Manzanas",
|
||||
"plu": "4099",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/apples-akane_1629314651.png"
|
||||
},
|
||||
{
|
||||
"name": "Naranjas",
|
||||
"plu": "4381",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4381-oranges-blood-01_1625082045.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Choclo",
|
||||
"plu": "3087",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3087-corn-04_1614633780.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Zapallo",
|
||||
"plu": "4734",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4734-mini-pumpkin_1633964765.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Zapallo italiano",
|
||||
"plu": "4750",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4750-squash-acorn-01_1625751871.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Repollo",
|
||||
"plu": "4069",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4069-green-cabbage_1633958066.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Betarragas",
|
||||
"plu": "4537",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4537-baby-golden-beets_1635173500.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Porotos verdes",
|
||||
"plu": "4527",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4527-beans-chinese-long-07_1625671743.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Mandarinas",
|
||||
"plu": "3524",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/noble-juicycrunch-productisolated-900x900-rgb-copy_1627662136.png"
|
||||
},
|
||||
{
|
||||
"name": "Uvas",
|
||||
"plu": "3491",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/arra-15-grape_1518122851.JPG"
|
||||
},
|
||||
{
|
||||
"name": "Duraznos",
|
||||
"plu": "3113",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3113-peaches-donut-04_1614707155.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Cerezas",
|
||||
"plu": "3549",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/screenshot-2023-05-02-100428_1683036305.png"
|
||||
},
|
||||
{
|
||||
"name": "Peras",
|
||||
"plu": "3317",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3317-angelys-pear_1460402454.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Ciruelas",
|
||||
"plu": "4435",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4435-plums-greengage-01_1625667846.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Kiwi",
|
||||
"plu": "3279",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3279-kiwi-gold-03_1614718637.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Piña",
|
||||
"plu": "4430",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4430-pineapple-05_1625667649.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Puerros",
|
||||
"plu": "4629",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4629-leeks-02_1625680225.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Alcachofas",
|
||||
"plu": "4519",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4519-artichokes-baby-02_1625671366.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Espárragos",
|
||||
"plu": "4521",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4521-asparagus-01_1625671446.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Berenjena",
|
||||
"plu": "4599",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4599-baby-eggplant-aubergine_1633372314.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Durazno Nectarin",
|
||||
"plu": "3437",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/yellow-fleshed-flat-nectarine_1629140965.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Damascos",
|
||||
"plu": "3044",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/3044-apricots-black-velvet-03_1614619576.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Membrillo",
|
||||
"plu": "4447",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4447-quince-1_1625668926.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Champiñones",
|
||||
"plu": "4647",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4647-mushrooms-chanterelles-1_1625681503.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Castañas",
|
||||
"plu": "4927",
|
||||
"image": "https://server-ifps.accurateig.com/assets/commodities/4927-chestnuts-italian-02_1625756943.jpg"
|
||||
}
|
||||
]
|
||||
@@ -11,9 +11,9 @@ from io import BytesIO
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
JSON_FILE = 'frutas.json'
|
||||
OUTPUT_DIR = 'keychain_cards'
|
||||
IMG_CACHE_DIR = 'image_cache'
|
||||
JSON_FILE = os.path.join(os.getcwd(), 'frutas2.json')
|
||||
OUTPUT_DIR = os.path.join(os.getcwd(), 'keychain_cards')
|
||||
IMG_CACHE_DIR = os.path.join(os.getcwd(), 'image_cache')
|
||||
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
||||
os.makedirs(IMG_CACHE_DIR, exist_ok=True)
|
||||
|
||||
@@ -113,4 +113,4 @@ if __name__ == "__main__":
|
||||
print(f"Processing {len(data)} cards...")
|
||||
for entry in data:
|
||||
generate_card(entry)
|
||||
print("\nAll done. Try not to lose your keys.")
|
||||
print("\nAll done. Try not to lose your keys.")
|
||||
|
||||
|
Before Width: | Height: | Size: 717 KiB After Width: | Height: | Size: 717 KiB |
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.0 MiB |
BIN
KeyGenerator/image_cache/3044.jpg
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
KeyGenerator/image_cache/3087.jpg
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB |
|
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 3.4 MiB |
|
Before Width: | Height: | Size: 3.5 MiB After Width: | Height: | Size: 3.5 MiB |
BIN
KeyGenerator/image_cache/3113.jpg
Normal file
|
After Width: | Height: | Size: 819 KiB |
|
Before Width: | Height: | Size: 879 KiB After Width: | Height: | Size: 879 KiB |
|
Before Width: | Height: | Size: 216 KiB After Width: | Height: | Size: 216 KiB |
|
Before Width: | Height: | Size: 2.7 MiB After Width: | Height: | Size: 2.7 MiB |
BIN
KeyGenerator/image_cache/3279.jpg
Normal file
|
After Width: | Height: | Size: 213 KiB |
|
Before Width: | Height: | Size: 3.0 MiB After Width: | Height: | Size: 3.0 MiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
BIN
KeyGenerator/image_cache/3317.jpg
Normal file
|
After Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB |
BIN
KeyGenerator/image_cache/3414.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
KeyGenerator/image_cache/3437.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 578 KiB After Width: | Height: | Size: 578 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 188 KiB |
BIN
KeyGenerator/image_cache/3491.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
KeyGenerator/image_cache/3509.jpg
Normal file
|
After Width: | Height: | Size: 2.3 MiB |
BIN
KeyGenerator/image_cache/3524.jpg
Normal file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
KeyGenerator/image_cache/3549.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 651 KiB After Width: | Height: | Size: 651 KiB |
BIN
KeyGenerator/image_cache/3626.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
KeyGenerator/image_cache/4068.jpg
Normal file
|
After Width: | Height: | Size: 444 KiB |
BIN
KeyGenerator/image_cache/4069.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
KeyGenerator/image_cache/4099.jpg
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
KeyGenerator/image_cache/4235.jpg
Normal file
|
After Width: | Height: | Size: 814 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 2.4 MiB After Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 786 KiB After Width: | Height: | Size: 786 KiB |
|
Before Width: | Height: | Size: 730 KiB After Width: | Height: | Size: 730 KiB |
|
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 636 KiB After Width: | Height: | Size: 636 KiB |
|
Before Width: | Height: | Size: 2.5 MiB After Width: | Height: | Size: 2.5 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
BIN
KeyGenerator/image_cache/4381.jpg
Normal file
|
After Width: | Height: | Size: 438 KiB |
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
BIN
KeyGenerator/image_cache/4430.jpg
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
BIN
KeyGenerator/image_cache/4435.jpg
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
BIN
KeyGenerator/image_cache/4447.jpg
Normal file
|
After Width: | Height: | Size: 9.2 MiB |
|
Before Width: | Height: | Size: 2.0 MiB After Width: | Height: | Size: 2.0 MiB |
BIN
KeyGenerator/image_cache/4519.jpg
Normal file
|
After Width: | Height: | Size: 213 KiB |
BIN
KeyGenerator/image_cache/4521.jpg
Normal file
|
After Width: | Height: | Size: 2.1 MiB |
BIN
KeyGenerator/image_cache/4527.jpg
Normal file
|
After Width: | Height: | Size: 280 KiB |
BIN
KeyGenerator/image_cache/4537.jpg
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
KeyGenerator/image_cache/4560.jpg
Normal file
|
After Width: | Height: | Size: 2.8 MiB |
BIN
KeyGenerator/image_cache/4599.jpg
Normal file
|
After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 2.6 MiB After Width: | Height: | Size: 2.6 MiB |
BIN
KeyGenerator/image_cache/4608.jpg
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 2.1 MiB After Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 2.9 MiB After Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 906 KiB After Width: | Height: | Size: 906 KiB |
|
Before Width: | Height: | Size: 1.0 MiB After Width: | Height: | Size: 1.0 MiB |
BIN
KeyGenerator/image_cache/4629.jpg
Normal file
|
After Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
BIN
KeyGenerator/image_cache/4647.jpg
Normal file
|
After Width: | Height: | Size: 8.9 MiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.4 MiB |
BIN
KeyGenerator/image_cache/4734.jpg
Normal file
|
After Width: | Height: | Size: 994 KiB |
|
Before Width: | Height: | Size: 827 KiB After Width: | Height: | Size: 827 KiB |
|
Before Width: | Height: | Size: 403 KiB After Width: | Height: | Size: 403 KiB |
|
Before Width: | Height: | Size: 834 KiB After Width: | Height: | Size: 834 KiB |
BIN
KeyGenerator/image_cache/4750.jpg
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 658 KiB After Width: | Height: | Size: 658 KiB |
|
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 820 KiB After Width: | Height: | Size: 820 KiB |
|
Before Width: | Height: | Size: 444 KiB After Width: | Height: | Size: 444 KiB |
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 365 KiB After Width: | Height: | Size: 365 KiB |
|
Before Width: | Height: | Size: 3.5 MiB After Width: | Height: | Size: 3.5 MiB |
BIN
KeyGenerator/image_cache/4927.jpg
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
|
Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 3.4 MiB After Width: | Height: | Size: 3.4 MiB |
|
Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.6 MiB |