En asp clásico para obtener la imagen del QR de una url he hecho lo siguiente:
dim enlace : enlace = "http://vegamatrica.blogspot.com.es/"
'URL de creación del QR
dim url : url = "https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl="&enlace&"&choe=UTF-8"
Indicar que a pesar de que la API de Google Charts está obsoleta, pensaba utilizarla.
Ver: https://developers.google.com/chart/image/docs/making_charts
'DONDE:
'chs->tamaño del código QR (longitud x altura)
'cht->con su valor de argumento "qr" indica que el API Google Charts debe generar un código QR.
'chl->contiene la URL a la que se generará el QR.
'choe->(opcional) indica la codificación del código QR, por defecto UTF-8.
'ruta donde guardo la imagen del QR.
dim rutaGuardarQR : rutaGuardarQR = "C:\proyectos"
'Nombre de la imagen del QR que se guarda como PNG
dim nombreImagenQR : nombreImagenQR = "imagenQR.png"
call saveImageFromUrl(url, rutaGuardarQR, nombreImagenQR)
'La función saveImageFromUrl permite guardar la imagen del QR en la carpeta correspondiente. Convirtiendo la imagen de PNG a JPG
function saveImageFromUrl(strFileURL, imageLocation, image)
server.scripttimeout = 60 * 20
' Fetch the file
Dim objXMLHTTP : Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Dim objADOStream : Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Dim objFSO : Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(imageLocation) Then objFSO.DeleteFile imageLocation
Set objFSO = Nothing
objADOStream.SaveToFile imageLocation & "/" & image
objADOStream.Close
Set objADOStream = Nothing
'Convertir la imagen del QR PNG en JPG
dim imageMagick: Set imageMagick = CreateObject("ImageMagickObject.MagickImage.1")
dim imageConverted
imageConverted = imageMagick.Convert(imageLocation & "/" image, imageLocation & "/" & "imagenQR.jpg")
End if
Set objXMLHTTP = Nothing
end function
Al ejecutar la función "saveImageFromUrl" lanzó el siguiente error:
"El componente ActiveX no puede crear el objeto: 'ImageMagickObject.MagickImage.1'" a pesar de haberlo registrado con el siguiente comando:
regsvr32 "C:\Archivos de programa\ImageMagick-6.2.3-Q8\ImageMagickObject.dll"
*Lo que se puede ver en la siguiente imagen de regsvr32.exe
Como necesito convertir la imagen del QR de PNG en JPG, y después de dedicarle un día en intentar solucionar ese problema y sin obtener soluciones, he decidido hacer la función en php y llamar a ese php desde el asp.
Para hacer la función en php utilicé el código de "PHP QR Code" http://phpqrcode.sourceforge.net por su facilidad de uso.
- Me descargué la biblioteca "phpqrcode"
- En mi PHP:
$url = "http://vegamatrica.blogspot.com.es/"
$filePath = "C:\proyectos"
QRcode::png($url, $filePath); //$filePath ruta donde guardaré la imagen del QR en formato
if (!file_exists($filePath."\imagenQR.png")) {
QRcode::png($urlCompletaTurispain, $pngAbsoluteFilePath);
$image = imagecreatefrompng($filePath."\imagenQR.png");
imagejpeg($image, $filePath."\imagenQR.jpg", 70);
//convertimos la imagen png a jpg con calidad 70%
imagedestroy($image);
//Borramos la imagen png
unlink($pngAbsoluteFilePath);
}else{
echo "La ruta no existe";
}
Y finalmente pude utilizarla en el ASP.