![]() |
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 ![]() |
Yazar | |
M-Guney ![]() Deneyimli Üye ![]() Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 47 |
![]() ![]() ![]() ![]() ![]() Gönderim Zamanı: 23 Saat 33 Dakika Önce 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. |
|
![]() |
|
M-Guney ![]() Deneyimli Üye ![]() Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 47 |
![]() ![]() ![]() ![]() ![]() |
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); }
|
|
![]() |
|
M-Guney ![]() Deneyimli Üye ![]() Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 47 |
![]() ![]() ![]() ![]() ![]() |
![]() |
|
Emr.Erkmn ![]() Moderatör ![]() Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Puanlar: 306 |
![]() Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
![]() ![]() ![]() ![]() |
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; |
|
![]() |
|
M-Guney ![]() Deneyimli Üye ![]() Kayıt Tarihi: 16 Eylül 2025 Konum: Konya, Meram, K Durum: Aktif Değil Puanlar: 47 |
![]() ![]() ![]() ![]() ![]() |
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; } |
|
![]() |
|
Emr.Erkmn ![]() Moderatör ![]() Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Puanlar: 306 |
![]() Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
![]() ![]() ![]() ![]() |
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 - 25 Dakika Önce Saat 14:25 |
|
![]() |
|
Emr.Erkmn ![]() Moderatör ![]() Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Puanlar: 306 |
![]() Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
![]() ![]() ![]() ![]() |
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; }
|
|
![]() |
|
Emr.Erkmn ![]() Moderatör ![]() Kayıt Tarihi: 28 Şubat 2025 Durum: Aktif Puanlar: 306 |
![]() Yanıt Yaz
Alıntı Emr.Erkmn
Bu mesaj kurallara aykırıysa buradan yöneticileri bilgilendirebilirsiniz.
![]() ![]() ![]() ![]() |
. 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ı |
|
![]() |
Yanıt Yaz ![]() |
|
Tweet |
Forum Atla | Forum İzinleri ![]() Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |