Página 2 de 2

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 20:00
por JoséQuintas
api.png
Sei lá se essa opção resolveria, mas depende da LIB permitir alterar.
De repente só vai complicar, pode estar tentando resolver um problema arrumando um maior ainda.

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 20:11
por Marcio-MMM
Quintas, não me importaria de trocar de LIB
JoséQuintas escreveu: Sei lá se essa opção resolveria, mas depende da LIB permitir alterar.
De repente só vai complicar, pode estar tentando resolver um problema arrumando um maior ainda.
Gerando o QRCode (se possivel direto em JPG = tamanho menor), com tamanho variável, seria o IDEAL...

E sem surpresas como deste tópico

RECOMENDA ALGUMA?

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 20:17
por JoséQuintas
Comentário a mais:

A imagem original, abrindo no paint, no photo, mesmo na imagem em miniatura, tudo ok.
Só mesmo na hora de usar no aplicativo não aparece.

Talvez avisar lá pra atualizarem a dll.
Não sei se é DLL paga, e descobriram como proteger pra não poder usar em aplicativo.
É mais mistério do Windows pra acrescentar aos muitos existentes.

Mas por enquanto aquela opção mesmo: converter pra outro tipo, depois converter de volta pra bitmap.

Tem a LIB do próprio Harbour, pra desenhar em qualquer coisa, o código pra desenhar vai por codeblock.
Uso em PDF.
Com o codeblock correto, desenha em tela.

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 20:21
por JoséQuintas

Código: Selecionar todos

METHOD DrawBarcodeQRCode( nX, nY, nLineWidth, cCode, nFlags )

   LOCAL nLineHeight, hZebra

   hZebra := hb_Zebra_Create_QRCode( cCode, nFlags )
   nLineHeight := nLineWidth
   IF hb_Zebra_GetError( hZebra ) == 0
      hb_Zebra_Draw( hZebra, { | x, y, w, h | HPDF_Page_Rectangle( ::oPDFPage, x, y, w, h ) }, nX, nY, nLineWidth, -nLineHeight )
      HPDF_Page_Fill( ::oPDFPage )
      hb_Zebra_Destroy( hZebra )
   ENDIF

   RETURN NIL
esta linha que desenha

Código: Selecionar todos

      hb_Zebra_Draw( hZebra, { | x, y, w, h | HPDF_Page_Rectangle( ::oPDFPage, x, y, w, h ) }, nX, nY, nLineWidth, -nLineHeight )
Isso é pra PDF, teria que trocar isso pro equivalente em tela.
Tem um post antigo do ASimões, mas acho que ele não chegou a postar o fonte.

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 20:24
por JoséQuintas
aqui

https://pctoledo.org/forum/viewto ... de#p144703
QRCode usando HMG_CreateBarCode portada da Minigui Ex, usando funções BT_* Bostaurus (Dr. Claudio)
Parece que ele pegou da HMG pra HWGUI.
Mas só tem a imagem e esse comentário.

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 21:21
por Marcio-MMM
JoséQuintas escreveu:aqui
https://pctoledo.org/forum/viewto ... ..........
QRCode usando HMG_CreateBarCode portada da Minigui Ex, usando funções BT_* Bostaurus (Dr. Claudio)
Parece que ele pegou da HMG pra HWGUI.
Mas só tem a imagem e esse comentário.
Quintas, resolvido com a sua indicação (caminho das pedras): O Rochinha já havia se debruçado sobre isso. A questão é o encoding e o correctionLevel do QRCode (na função FullQrCode da QRCodeLib).

Obrigado por documentar Rochinha.

Código: Selecionar todos

FUNCTION QRCode( cStr, cFile )
   hLib := hb_libLoad( "QRCodeLib.dll" )

		/*Function FullQRCode( autoConfigurate AS BOOL, AutoFit AS BOOL, ;       
			backColor AS _INT, barColor AS _INT, ;
			Texto AS LPSTR, ;
			correctionLevel AS _INT, ; 
			encoding AS _INT, ;
			marginpixels AS _INT, ;
			moduleWidth AS _INT, ;
			Height AS _INT, Width AS _INT, ;
			FileName AS LPSTR ) AS LPSTR FROM "FullQRCode" LIB hDLL

			// Niveis de Correcao(correctionLevel)
			LEVEL_L 0 // 7%
			LEVEL_M 1 // 15%
			LEVEL_Q 2 // 25%
			LEVEL_H 3 // 30%

			// Nivel de codificacao(encoding)
			ENC_ALPHA 0   // encodes alphanumeric characters (digits 0 - 9; upper case letters A -Z; nine other characters: space, $ % * + - . / : ); )
			ENC_BYTE 1    // encodes binary values ( 8-bit data)
			ENC_NUMERIC 2 // encodes numeric values only (digits 0-9)
			ENC_KANJI 3   // encodes Kanji characters. Kanji characters in QR Code can have values 8140 -9FFC and E040 - EBBF
			ENC_AUTO 4    // automatic seleccion of the encoding algorithm
		*/

	   hb_DynCall( { "FullQRCode", hLib, HB_DYN_CALLCONV_STDCALL  }, .t., .t.,;
			 			RGBCor(255,255,255), RGBCor(0,0,0), ;
			 			cStr, ;
      				1, ;
						4, ;
						10, ;
						5, ;
						300, 300, cFile ) 


   hb_libFree( hLib )
  	RETURN file(cFile)


FUNCTION RGBCor( nRed, nGreen, nBlue )
	RETURN ( nRed + ( nGreen * 256 ) + ( nBlue * 65536 ) ) 	


Apesar de gerar o BMP, o FreeImage se perde na geração do PNG e do JPG.

Mas já está funcional. Valeu pela ajuda, sempre.

BMP distorcido no QRCode PIX

Enviado: 17 Mar 2023 21:42
por JoséQuintas
E olhando os fontes que tenho aqui, pesquisando aquela função, chega-se a esta:

Código: Selecionar todos

  hBitmap := HMG_Zebra_CreateBitmapBarCode 
hBitmap é um pointer, significa que basta usar esse pointer pra mostrar em tela

Referências:

hmg3\source\h_hmg_zebra.prg
oohg\samples\bostaurus\s014.prg
hmge\samples\advanced\hmg_zebra\hmg_zebra.prg
hwgui\source\winapi\barcode.prg

Nas 3 minigui é usando hbzebra e bostaurus, na hmg3 tem a geração do bmp/pointer
na hwgui é rotina da própria hwgui

Nenhuma precisa de nada externo, só o EXE compilado mesmo.
Dispensam o uso dessa DLL.

BMP distorcido no QRCode PIX

Enviado: 23 Mar 2023 20:49
por Nascimento
Muito legal, tempo atrás eu estava tentando fazer em escpos até gerou mais não validava

BMP distorcido no QRCode PIX

Enviado: 25 Mar 2023 11:20
por Giovany Vecchi
Se usar fivewin tem que tirar a transparencia da imagem.

Image_1:lTransparent := .F.