Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Clomosy ile değişken kullanımı
  Aktif Konular Aktif Konular RSS - Category Resmi ekleme
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

Category Resmi ekleme

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
M-Guney Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 47
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Category Resmi ekleme
    Gönderim Zamanı: 06 Ekim 2025 Saat 15:17
Ben ERP projesinde kullanmak için telefondan ImageChooser ile eklenmiş olan fotoğrafı API aracılığıyla serverda tutup daha sonrasında kullamak istiyorum.

ImageChooser da proImage kullanımına izin vermiyor verseydi 
CameraImg.clProSettings.PictureSource şeklinde almayı planlıyordum ben bu resmi nasıl api aracılığıyla veri tabanına yollayabilirim.
Yukarı Dön
M-Guney Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 47
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 06 Ekim 2025 Saat 15:39
void onbtnClick;
{
try
    Clomosy.ImageChooser(Form1, CameraImg2);
    CameraImg2.Bitmap.SaveToStream(MemStream);
    noteMemo.Lines.Text = MemStream.AsBase64;
    // Image içindeki resmi okuyup base 64 çevirip db ye yaz
except
ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
}
Yukarı Dön
M-Guney Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 47
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 06 Ekim 2025 Saat 15:40
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 307
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 06 Ekim 2025 Saat 18:11
Merhaba Güney, 
2 farklı prosedür örneği göndereceğim, inceledikten sonra benzer hata alırsan tekrar bakalım. 
1) 
void gorselYuklendi;
var
  base64Image: string;
  apiUrl: string;
  RequestBody: string;
  tempPath: string;
  FileStream: TclMemoryStream;
{
  FileStream = TCLMemoryStream.Create;
CameraImg.Bitmap.SaveToStream(FileStream); 
  base64Image = Clomosy.StreamToBase64(FileStream);

  apiUrl = 'kendi api keyin' + API_KEY;

  RequestBody = '{
    "requests": [
      {
        "image": {
          "content": "' + base64Image + '"
        },
        "features": [
          {
            "type": "DOCUMENT_TEXT_DETECTION",
            "maxResults": 10
          }
        ]
      }
    ]
  }';

  try
    RestCreate(apiUrl, RequestBody);
  except
    ShowMessage('Görsel verisi hazırlanırken hata oluştu: ' + LastExceptionMessage);
  }
}
*************************
2) 
void Stream2Base64;
var
  clMemoryStream:TCLMemoryStream;
{
  // Save Img To File
  clMemoryStream=TCLMemoryStream.Create;
  try
    CameraImg.Bitmap.SaveToStream(clMemoryStream);
    base64Image = Clomosy.StreamToBase64(cLMemoryStream);
  except
    base64Image = '';
  }
}
Resmi SQL'e update için; 
  CLQuery.FieldByName('Resim_Yolu').AsString = base64Image;



Yukarı Dön
M-Guney Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 47
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12 Saat 46 Dakika Önce Saat 13:49
Bu şekilde yaptım fakat resmin bouyutuna göre çalışma süresi max 13sn min 1sn olarak test ettim daha nasıl azaltabilirim. Ayrıca kullanıcıya ERP de kullanmak üzere resim yükletirken kaç mb sınır koyulamlı max değer kaç olmalı şuanlık middleware ile kategori max 15mb ürünler max 20mb olarak kontrol ediyorum.


var
  Form1 : TCLForm;
  //noteMemo : TclMemo;
  SourceImg : TCLImage;
  EdtCName : TclProEdit;

  CameraBtn, SaveBtn:TclButton;
  CameraImg: TCLImage;
  ImageStr : String;
//SaveBtn
void AddCategory
var 
  output: String;
  MemStream:TCLMemoryStream;
{
  try
    
    MemStream = TCLMemoryStream.Create;
    CameraImg.Bitmap.SaveToStream(MemStream);
    ImageStr =  Clomosy.StreamToBase64(MemStream);
    
    clRest.BaseURL = ''MY_ADDRESSS/addcategory';
    clRest.Accept = 'application/json';
    clRest.Method = rmPOST;//post
    if(EdtCName.Text ==''){
      ShowMessage('Lütfen gerekli kısımları doldurun.')
    }else{
      clRest.AddBody(
      '{"category_name" : "'+EdtCName.Text+'", "category_image" :'+'"'+ ImageStr +'"}',
      'application/json');
      
      // ÇALIŞMIYOR HEADER İS NOT WORKİNG
      
      //clRest.AddHeader('Authorization','eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo1MSwiZW1haWwiOiJtdWhhbW1lZHlhemlsaW1AZ21haWwuY29tIiwicm9sZV9pZCI6MSwiaWF0IjoxNzU5NzU4MTQ1LCJleHAiOjE3NTk3NjE3NDV9.IwjYTHC0YZo2XrYCgBrzhPYq1eDU-dzKRHZ073Bxrro');
      clRest.Execute;
      output = clRest.Response;
      ShowMessage(output);
      
    } 
  except
  ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}

//Choose Image
void onbtnClick; // Resim Seç 
{
  try
      Clomosy.ImageChooser(Form1, CameraImg);
  except
  ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}


// Resmi getir kontrol et
/*
 void memoBase64ToStreamClick;
 {
  try 
    clRest=TCLRest.Create;   
    clRest.BaseURL = 'MY_ADDRESSS/category-image/8';
    clRest.Accept = 'image/png'; // Eğer ki resim png değil JPEG  olsa bile resmi getirir.
    clRest.Method = rmGET;
    clRest.Execute;
    SourceImg.Bitmap.LoadFromStream(clRest.StreamResponse);
  except
  ShowMessage('Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}*/

 
 //------ Main Code ------
 {
   Form1 = TCLForm.Create(Self);

   clRest=TCLRest.Create;
   /*
   noteMemo = Form1.AddNewMemo(Form1,'noteMemo','---');
   noteMemo.Align = alMostTop;
   noteMemo.Height = 50;
   noteMemo.StyledSettings = ssFamily;
   noteMemo.TextSettings.WordWrap = True;
   Form1.AddNewEvent(noteMemo,tbeOnClick,'memoBase64ToStreamClick');
   */
 
  SourceImg = Form1.AddNewImage(Form1,'SourceImg');
  SourceImg.Height = 300;
  SourceImg.Width = 300;
  SourceImg.Align = alClient;
  Form1.setImage(SourceImg,'https://clomosy.com/learn/clomosy.png');
   
  EdtCName = Form1.AddNewProEdit(Form1,'EdtCName', 'Kategori ismini giriniz..');
  EdtCName.Align = alTop;
  EdtCName.Width = 370;
  EdtCName.Height = 30;
  EdtCName.Margins.Top = 10;
  EdtCName.Margins.Left = 10;
  EdtCName.Margins.Right = 10;
  EdtCName.clProSettings.FontColor = clAlphaColor.clHexToColor('#808080');
  EdtCName.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ebebeb');
  EdtCName.clProSettings.BorderColor = clAlphaColor.clHexToColor('#000000');
  EdtCName.clProSettings.BorderWidth = 2;
  EdtCName.clProSettings.FontSize = 40;
  EdtCName.clProSettings.FontVertAlign = palcenter;
  EdtCName.clProSettings.FontHorzAlign = palcenter;
  EdtCName.clProSettings.TextSettings.Font.Style = [fsBold];
  EdtCName.clProSettings.IsFill = True; 
  EdtCName.clProSettings.IsRound = True;
  EdtCName.clProSettings.RoundHeight = 10;
  EdtCName.clProSettings.RoundWidth = 10;
  EdtCName.SetclProSettings(EdtCName.clProSettings);
   
  CameraBtn = Form1.AddNewButton(Form1, 'CameraBtn','Resim Seç');
  Form1.AddNewEvent(CameraBtn, tbeOnClick, 'onbtnClick');
  CameraBtn.Align = alBottom;
  
  SaveBtn = Form1.AddNewButton(Form1, 'SaveBtn','KAYDET');
  Form1.AddNewEvent(SaveBtn, tbeOnClick, 'AddCategory');
  SaveBtn.Align = alBottom;
 
  CameraImg = Form1.AddNewImage(Form1, 'CameraImg');
  CameraImg.Height = 300;
  CameraImg.Width = 300;
  CameraImg.Align = alCenter;
   
   Form1.Run;
 }

Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 307
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12 Saat 11 Dakika Önce Saat 14:24
Güney  kodlama da  boyut kontrolü için;
Bu prosedürü kullanabilirsin;
void CheckImageSize 
  var
    MemStream: TCLMemoryStream;
    fileSize: Integer;
{
  {
    MemStream = TCLMemoryStream.Create;
    CameraImg.Bitmap.SaveToStream(MemStream);
    fileSize = MemStream.Size;
    

    if (fileSize > 3145728) {
      ShowMessage('Resim çok büyük! Maksimum 3MB olmalı.');
      ShowMessage('Mevcut boyut: ' + IntToStr(fileSize div 1024 div 1024) + 'MB');
      Exit;
    }
    
    ImageStr = Clomosy.StreamToBase64(MemStream);
    MemStream.Free;
  }
}




Düzenleyen Emr.Erkmn - 12 Saat 10 Dakika Önce Saat 14:25
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 307
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12 Saat 3 Dakika Önce Saat 14:32
var
  Form1: TCLForm;
  SourceImg: TCLImage;
  EdtCName: TclProEdit;
  CameraBtn, SaveBtn: TclButton;
  CameraImg: TCLImage;
  ImageStr: String;
  clRest: TclRest;
  statusLabel: TclProLabel;

void CheckImageSize 
  var
    MemStream: TCLMemoryStream;
    fileSize: Integer;
    fileSizeMB: Double;
{
  
    MemStream = TCLMemoryStream.Create;
    CameraImg.Bitmap.SaveToStream(MemStream);
    fileSize = MemStream.Size;
    fileSizeMB = fileSize / 1024 / 1024;
    
    // 3MB = 3145728 bytes
    if (fileSize > 3145728) {
      ShowMessage('Resim çok büyük! Maksimum 3MB olmalı.');
      ShowMessage('Mevcut boyut: ' + FloatToStr(fileSizeMB) + 'MB');
      MemStream.Free;
      Exit;
    }
    
    statusLabel.Text = 'Resim boyutu: ' + FloatToStr(fileSizeMB) + 'MB';
    MemStream.Free;
  
}





void OnRestCompleted 
  {
    ShowMessage('İşlem tamamlandı: ' + clRest.Response);
  }


void AddCategory 
  var 
    output: String;
    MemStream: TCLMemoryStream;
{
  
    try 
      
      // Resim boyutunu kontrol et
      CheckImageSize;
      
    
      
      // REST işlemi
      clRest.BaseURL = 'MY_ADDRESSS/addcategory';
      clRest.Accept = 'application/json';
      clRest.Method = rmPOST;
      clRest.ConnectTimeOut = 30000; // 30 saniye timeout
      
      if (EdtCName.Text == '') {
        ShowMessage('Lütfen gerekli kısımları doldurun.');
      } else {
        clRest.AddBody(
          '{"category_name" : "' + EdtCName.Text + '", "category_image" : "' + ImageStr + '"}',
          'application/json'
        );
        
        // Asenkron çalıştır
        clRest.OnCompleted = 'OnRestCompleted';
        clRest.ExecuteAsync;
      }
      
     except 
      ShowMessage('Exception Class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
    
  }
}

void onbtnClick 
  {
    try 
      // Resim seç
      Clomosy.ImageChooser(Form1, CameraImg);
      
      // Seçim sonrası hemen kontrol et
      CheckImageSize;
      
     except 
      ShowMessage('Exception Class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
    
  }
}

// Resmi getir kontrol et
void memoBase64ToStreamClick 
  {
    try 
      clRest = TCLRest.Create;   
      clRest.BaseURL = 'MY_ADDRESSS/category-image/8';
      clRest.Accept = 'image/png';
      clRest.Method = rmGET;
      clRest.Execute;
      SourceImg.Bitmap.LoadFromStream(clRest.StreamResponse);
     except 
      ShowMessage('Exception Class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
    
  }
}

{
  Form1 = TCLForm.Create(Self);
  Form1.SetFormColor('#085e26', '#4dcc1e', clGHorizontal);
  Form1.clSetCaption('Kategori Ekleme');
  Form1.clSetWindowState(fwsMaximized);

  clRest = TCLRest.Create;
  
  // Status Label
  statusLabel = Form1.AddNewProLabel(Form1, 'statusLabel', 'Resim seçiniz...');
  statusLabel.Align = alMostTop;
  statusLabel.Height = 30;
  statusLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  statusLabel.clProSettings.FontSize = 16;
  statusLabel.clProSettings.TextSettings.Font.Style = [fsBold];
  statusLabel.SetclProSettings(statusLabel.clProSettings);
  
  
  // Source Image
  SourceImg = Form1.AddNewImage(Form1, 'SourceImg');
  SourceImg.Height = 200;
  SourceImg.Width = 200;
  SourceImg.Align = alTop;
  SourceImg.Margins.Top = 10;
  SourceImg.Margins.Left = 10;
  SourceImg.Margins.Right = 10;
  Form1.setImage(SourceImg, 'https://clomosy.com/learn/clomosy.png');
  
  // Edit
  EdtCName = Form1.AddNewProEdit(Form1, 'EdtCName', 'Kategori ismini giriniz..');
  EdtCName.Align = alTop;
  EdtCName.Width = 370;
  EdtCName.Height = 50;
  EdtCName.Margins.Top = 10;
  EdtCName.Margins.Left = 10;
  EdtCName.Margins.Right = 10;
  EdtCName.clProSettings.FontColor = clAlphaColor.clHexToColor('#808080');
  EdtCName.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ebebeb');
  EdtCName.clProSettings.BorderColor = clAlphaColor.clHexToColor('#000000');
  EdtCName.clProSettings.BorderWidth = 2;
  EdtCName.clProSettings.FontSize = 18;
  EdtCName.clProSettings.FontVertAlign = palcenter;
  EdtCName.clProSettings.FontHorzAlign = palcenter;
  EdtCName.clProSettings.TextSettings.Font.Style = [fsBold];
  EdtCName.clProSettings.IsFill = True; 
  EdtCName.clProSettings.IsRound = True;
  EdtCName.clProSettings.RoundHeight = 10;
  EdtCName.clProSettings.RoundWidth = 10;
  EdtCName.SetclProSettings(EdtCName.clProSettings);
  
  // Camera Button
  CameraBtn = Form1.AddNewButton(Form1, 'CameraBtn', 'RESİM SEÇ');
  Form1.AddNewEvent(CameraBtn, tbeOnClick, 'onbtnClick');
  CameraBtn.Align = alBottom;
  CameraBtn.Height = 50;
  CameraBtn.Margins.Bottom = 10;
  CameraBtn.Margins.Left = 10;
  CameraBtn.Margins.Right = 10;
  
  // Save Button
  SaveBtn = Form1.AddNewButton(Form1, 'SaveBtn', 'KAYDET');
  Form1.AddNewEvent(SaveBtn, tbeOnClick, 'AddCategory');
  SaveBtn.Align = alBottom;
  SaveBtn.Height = 50;
  SaveBtn.Margins.Bottom = 10;
  SaveBtn.Margins.Left = 10;
  SaveBtn.Margins.Right = 10;
  
  // Camera Image
  CameraImg = Form1.AddNewImage(Form1, 'CameraImg');
  CameraImg.Height = 300;
  CameraImg.Width = 300;
  CameraImg.Align = alCenter;
  CameraImg.Margins.Top = 10;
  CameraImg.Margins.Bottom = 10;
  
  Form1.Run;
}
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 307
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Saat 47 Dakika Önce Saat 14:48
. Ayrıca kullanıcıya ERP de kullanmak üzere resim yükletirken kaç mb sınır koyulamlı max değer kaç olmalı şuanlık middleware ile kategori max 15mb ürünler max 20mb olarak kontrol ediyorum. 

Sorunun cevabı ise;
Bu biraz tercih meselesi, sunucu gücü, yükü, kullanıcı sayısı vs gibi etkenler etkiler. 
Genel olarak bir sınır koymak mantıklı
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,033 Saniyede Yüklendi.